home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Info-Mac 4
/
Info_Mac IV CD-ROM (Pacific HiTech Inc.)(August 1994).iso
/
Development
/
Information
/
Gestalt Selectors List 2.5
< prev
Wrap
Text File
|
1994-05-29
|
162KB
|
3,746 lines
Gestalt Selectors List 2.5
==========================
First published: 12 October 1992, 13:15 CET (GMT+1)
Last modified : 29 May 1994, 18:20 CET (GMT+2, DST)
This document lists all selectors known to the editor. These can include
selector codes installed by Apple (system) software or by software from
third and so called "fourth" parties (your software?).
The information in this list is useful for programmers and other people
who can use the Gestalt Manager thru externals (with HyperCard,
4th Dimension etc.).
This file can be best viewed with a mono-spaced font like Monaco. Because
it is wrapped as setext you can use several utilities to index and read it.
For the Macintosh you can use Easy View and on a UNIX system sv (setext
viewer) works fine. Both are available by FTP from sumex-aim.stanford.edu
(or its mirrors!), archived respectively as:
info-mac/text/easy-view-244.hqx
info-mac/text/setext-viewer-03-unix.uu
See for more information about this list the chapters at the end.
Contents
--------
Changes
Contributions
Changes Overview
Gestalt Selector Codes
Apple System Software
Apple Additional Software
Third Parties Software
Unknown Gestalt Selector Codes
Apple System Software
Apple Additional Software
Third Parties Software
Gestalt Manager Calls
Gestalt Manager Routines
Undocumented Gestalt Manager Routines
Gestalt Value Routines
History
Environs
SysEnvirons
Gestalt
Reports
AppleShare File & Print Server selector codes
AppleTalk
Copy protection using Gestalt
Environs & SysEnvirons
Executor Mac-emulator
GestaltValue
Glue code
RAM Doubler 1.0
QuickTime
Kilo-liners
Direct Gestalt Calls
Direct GestaltValue Calls
GestaltSelectorZero
Abbreviations
Sources
Related Software
About this list
Availability
Acknowledgements
Definitions and Format
Use in Language
Definitions
Format Selector Entry
Format Version Numbers
Legal Stuff
Notice of Liability
Trademarks
Distribution
Editor's Address
Changes
=======
All contributions and changes to this list since the previous version are
listed in this chapter.
Contributions
-------------
The following persons contributed to this version:
_Person: Software: Selector(s) added/changed: _
Anonymous System (enabler) mach, powr, sdev, sdvr, xlat
System 7.5? apml, cate, clbv, fs , gpad,
gprf, grfx, HAM , help, nlup,
os , pmgr, pxtn, qdgx, qdrw,
snhw, thds, tpad, vdrc
Daniel Azuma FileTyper Menu cp TExT, Typ4
Lawrence D'Oliveiro System kbd
Roland Mansson Display Enabler 1.0 ext iadj
PowerBook cp? harp
Shared Library Manager ext
aslm
System (enabler) bugy, cput, mach, qd
System (enabler)? serh
unknown a pc, immg, octb, tpad
unknown system detc, ldap
unknown Third Party? PhoN
Marco Piovanelli System (enabler) kbd
System? XTND
Shared Code Manager ext SHCM
Dave Radcliffe System (enabler) cput
Rene G.A. Ros Agent Virtual User AgVU
AppleScript ext ascr, ascv
Asante EN/SC ext ASTN
Authentication Manager cp
UMAM
Color ICON Mania cp CiCN
Color Sync ext cmta, cmtc, cpnt
Drag and Drop ext drag
Easy Access cp easy
FaxMonitor ext SCTR
HearIt 1.0 cp HrIt
Keys! 1.0 DCKc
NoDesktopCleanup cp DCDt
Performa 1.1 cp bast, ppad, pprf
PowerBook Setup cd 7.3.1
PhoN
PowerClick 1.0 cp DanS
PrintPatrol 1.0 appl PtrP
Speak Note cp IF 8
System misc. bugy, bugz
System (enabler) a/ux, ctbv, evnt, intd, kbd ,
mach, mixd, port, stdf, vers
System 7.1P? ppad, pprf
System Update 3.0 ext bugx
TV Setup 1.0 cp mtv!
unknown vdrc, XTND
unknown system mash
Eric Schlegel (Microsoft)
Shared Code Manager ext SHCM
L.H. Wood AfterDark/DarkSide... SAVC, SAVR
_Person: Chapter/Section(s): _
Anonymous Reports RAMDoubler 1.0
Roland Mansson Related Software Gestalt! appl
Rene G.A. Ros History
Reports Environs & SysEnvirons
RAMDoubler 1.0,
Related Software AfterDark Gestalt file
DisplayGestalt appl,
TechTool appl 1.0.4,
Userfunction Gestalt code
Eric Schlegel (Microsoft)
Abbreviations
Changes Overview
----------------
Added selectors
Apple System : -
Apple Add. : sdev, sdvr, XTND
Third Parties : IF 8, SHCM, TExT, Typ4, UMAM
Added unknown
Apple System : aslm, bugx, detc, harp, iadj, ldap, mtv!, PhoN, ppad, pprf,
serh, tpad, vdrc
Apple Add. : a pc, cmta, HrIt, immg
Third Parties : ASTN, CiCN, DCDt, DCKc, PtrP
Changed selectors
Apple System : a/ux, cpnt, cput, ctbv, easy, evnt, fs , help, intd, kbd ,
mach, mixd, nlup, os , qdrw, stdf, vers
Apple Add. : apml, ascr, ascv, cate, clbv, cmtc, drag, gprf, grfx, pmgr,
pxtn, qdgx, snhw, thds, xlat
Third Parties : SAVC, SAVR
Changed unknown
Apple System : bast, mash
Apple Add. : -
Third Parties : SCTR
Previously unknown
Apple System : -
Apple Add. : cmta
Third Parties : XTND
Includes updates 2.4.1 up to and including 2.4.6, send to subscribers of
the mailing list.
Welcome to the InstallerMaker users!
Recently I reached an agreement with Aladdin Systems to include the GSL
with their "InstallerMaker" product. Simply put, it is StuffIt but it
unstuffs the files and folders to pre-defined positions. The person who
puts the installer together can set certain conditions when to install the
files or folders based on information from the Gestalt Manager amongst
other ways. This feature to use the Gestalt Manager is included with the
released 2.0 version.
For more information about "InstallerMaker" you can contact Aladdin via
their usual email addresses (i.e. aladdin@well.sf.ca.us) or contact Leonard
Rosenthol (leonardr@netcom.com). A demo copy of InstallerMaker can be found
on the usual FTP-sites.
Roland Mansson reported a new QuickDraw version (1.3.5?) and an
inconsistency with the 'cput' selector. This latter problem is because an
interface file is wrong which has been confirmed by Apple (Thanks to
Dave Radcliffe).
And also a few new, but unknown, selectors.
The PowerPC Upgrade Card enabler revealed more machine IDs of upgraded
machines.
These selectors were found to have some sort of a problem:
- ascv (different version format returned by AppleScript 1.0 and 1.1)
- aslm (if it returns a version number, it does so incorrect with version
1.1.1 of the Shared Library Manager)
- cput (incorrect values for 68K)
- evnt (overlap of attribute bits)
- intd (bit 1 of response never set on PB Duo 210)
- kbd (contradicting information on values for Adjustable Keyboards)
- sdvr (two meanings)
- grfx, pmgr, qdgx (all return 65536 with System 7.5 beta)
Also included are some changes based on information from the April 1994
Developer CD (System Software Edition), the May 1994 Developer CD (Tool
Chest) and the E.T.O. #14 CD.
Included is some speculative information about the function to which a
pointer is returned by the 'vmFn' selector. This selector is returned by
RAM Doubler, and seems to provide additional information.
The reference numbers to the sources are changed into codes which make it
clearer what kind of source it is. They are listed with the 'Sources'
chapter.
A new chapter 'History' was added to include some historical data about the
Gestalt Manager and its predecessors. If you have additional information,
like the names of the programmers, let me know.
Gestalt Selector Codes
======================
The following sections list selector codes of which the meaning is know.
Apple System Software
---------------------
a/ux (System [6.0.4])
gestaltAUXVersion
Returns the version of A/UX, if it is executing, as BCD?
gestaltAUXVersion = 'a/ux'; {A/UX version, if present}
NOTE:
This selector also indicates if you're running under MAE on a
UNIX machine. *AD08
addr (System [6.0.4])
gestaltAddressingModeAttr
Returns information about the current addressing mode.
gestaltAddressingModeAttr = 'addr'; {addressing mode attributes}
gestalt32BitAddressing = 0; {started up with 32-bit addr.}
gestalt32BitSysZone = 1; {system heap has 32-bit clean}
{block headers}
gestalt32BitCapable = 2; {machine is 32-bit capable}
alis (System [7.0])
(Remote Access Aliases ext [1.0?], part of Apple Remote Access)
gestaltAliasMgrAttr
Returns information about the Alias Manager.
gestaltAliasMgrAttr = 'alis';{Alias Mgr attributes}
gestaltAliasMgrPresent = 0;
gestaltAliasMgrSupportsRemoteAppletalk = 1; {supports Remote Appletalk}
*AD02
gestaltAlias??? = 2; {since System 7.1 Pro}
NOTE: See 'Reports' chapter (QuickTime section) for more information.
atkv (System [7.0, AppleTalk 56])
gestaltATalkVersion *AT02
Returns AppleTalk version as NumVersion.
This is different from 'atlk' !
gestaltATalkVersion = 'atkv'; {AppleTalk version} *AD01/M01
WARNING:
This selector returns the majorRev field of the NumVersion record as
hexadecimal instead of the usual BCD.
NOTE: See 'Reports' chapter (AppleTalk section) for more information.
atlk (System [6.0.4])
gestaltAppleTalkVersion
Returns the version of the .MPP driver as INTEGER.
gestaltAppleTalkVersion = 'atlk'; {AppleTalk version}
LAPMgrExists := (AppleTalkVersion >= 53); *AT02
BSDa (CloseView cp [???], by Berkeley Systems, Inc.)
gestaltCloseViewAttr
Returns information about the CloseView Control Panel.
gestaltCloseViewAttr = 'BSDa'; {CloseView attributes}
gestaltCloseViewEnabled = 0;
gestaltCloseViewDisplayMgrFriendly = 1; {Closeview compatible}
{with Display Manager}
{(FUTURE)} *AS05
cash (System [???]) *S03
gestaltRAMCacheSize
Returns byte-size of physical RAM allocated to Disk Cache.
0 = Disk Cache Off
gestaltRAMCacheSize = 'cash'; {RAM cache size}
NOTE:
This selector is listed in THINK Reference 1.0 but it is unknown which
System Software version should install it.
cfrg (System? [7.1.2?])
gestaltCFMAttr
Returns information about the Code Fragment Manager on the PowerMac
machines.
gestaltCFMAttr = 'cfrg'; {Code Fragment Mgr attributes}
gestaltCFMPresent = 0; {Code Fragment Manager is present}
conn (System [7.0])
gestaltConnMgrAttr
Returns information about the Connection Manager.
gestaltConnMgrAttr = 'conn'; {Conn. Mgr attributes}
gestaltConnMgrPresent = 0; {Connection Mgr is present}
gestaltConnMgrCMSearchFix = 1; {fix for CMAddSearch present}
gestaltConnMgrErrorString = 2; {has CMGetErrorString} *AS02
gestaltConnMgrMultiAsyncIO = 3; {CMNewsIOPB,CMDisposeIOPB,} *AS02
{CMPBRead,CMPBWrite,CMPBIOKill}
NOTE:
With System 6, this Gestalt selector isn't implemented when the
Communications Toolbox is installed. (Michael Hecht)
cpnt (System [7.1])
(Color Picker Extension ext [2.0])
(Color Sync ext [1.0.4?])
(Macintosh Easy Open ext? [1.0?])
(QuickTime ext [1.0])
(Sound Manager? ext [3.0?])
(Speech Manager ext [1.1.1])
gestaltComponentMgr
Returns Component Manager version as INTEGER.
gestaltComponentMgr = 'cpnt'; {Component Mgr version} *AS01
cput (System? [7.1.1?]) *AS04/AS05
gestaltNativeCPUtype
Returns a value that indicates the type of native processor that is
currently running.
gestaltNativeCPUtype = 'cput'; {Native CPU type}
{Motorola Architecture}
gestaltCPU68000 = $0x001;
gestaltCPU68010 = $0x002;
gestaltCPU68020 = $0x003;
gestaltCPU68030 = $0x004;
gestaltCPU68040 = $0x005;
{PowerPC Architecture}
gestaltCPU601 = $0x101;
gestaltCPU603 = $0x103;
gestaltCPU604 = $0x104;
NOTE:
The 'sysa' selector indicates which range of values to expect?
The GestaltEqu.h file published with E.T.O. #12 was replaced by the
one on E.T.O. #13. However there was made a mistake, it lists the 68K
values in the range 0-4 while it should be 1-5 as listed above.
This problem is acknowledged by Apple.
You can fix this problem by using the declarations listed above or by
using the GestaltEqu.h file from E.T.O. #13 but then test first the
gestaltSysArchitecture ('sysa') selector and when it reports a 68K
machine use gestaltProcessorType.
(Dave Radcliffe, Rene Ros, Roland Mansson)
crm (System [7.0])
(Communications Toolbox for System 6)
gestaltCRMAttr
Returns information about the Communications Resource Manager.
gestaltCRMAttr = 'crm '; {Comm. Resource Mgr attributes}
gestaltCRMPresent = 0; {Comm. Resource Mgr present}
gestaltCRMPersistentFix = 1; {fix for persistent tools} *AS02
gestaltCRMToolRsrcCalls = 2; {has CRMGetToolResource/} *AS02
{ReleaseToolResource}
ctbm (System [7.0])
(Communications Toolbox for System 6)
gestaltCTBManagersAttr
Returns information about the Communications Toolbox Managers, it is a
bitmask of which managers are present.
gestaltCTBManagersAttr = 'ctbm'; {Comm. Mgrs attributes} *S02
ctbu (System [7.0])
(Communications Toolbox for System 6)
gestaltCTBUtilsAttr
Returns information about the Communications Toolbox Utilities.
gestaltCTBUtilsAttr = 'ctbu'; {Comm. TB Utils attributes} *S02
gestaltCTBUtilsPresent = 0; *S02
ctbv (System [7.0])
(Communications Toolbox for System 6)
gestaltCTBVersion
Returns the version number of the Communications Toolbox.
gestaltCTBVersion = 'ctbv'; {Comm. Toolbox version}
dbac (System [7.0])
gestaltDBAccessMgrAttr
Returns information about the Data Access Manager.
gestaltDBAccessMgrAttr = 'dbac'; {Data Access Mgr attributes}
dfnd (PowerTalk ext [1.0?], part of System 7.1 Pro and System 7.5)
gestaltSDPFindVersion
Returns the SDP Find version as INTEGER.
gestaltSDPFindVersion = 'dfnd'; {SDP Find version}
dict (System [7.1])
gestaltDictionaryMgrAttr
Returns information about the Dictionary Manager.
gestaltDictionaryMgrAttr = 'dict'; {Dictionary Mgr attributes}
gestaltDictionaryMgrPresent = 0;
ditl (System [7.0])
gestaltDITLExtAttr
Returns information about the Dialog Manager.
gestaltDITLExtAttr = 'ditl'; {Dialog Mgr attributes}
dplv (System [7.1.2?]) *AS05
gestaltDisplayMgrVers
Returns Display Manager version as INTEGER?.
gestaltDisplayMgrVers = 'dplv'; {Display Mgr version}
dply (System [7.1.2?]) *AS05
gestaltDisplayMgrAttr
Returns information about the Display Manager.
gestaltDisplayMgrAttr = 'dply'; {Display Mgr attributes}
gestaltDisplayMgrPresent = 0; {True if Display Mgr is present}
gestalt??? = 1;
dsig (PowerTalk ext [1.0?], part of System 7.1 Pro and System 7.5)
gestaltDigitalSignatureVersion
Returns version of the Digital Signature toolbox as BCD.
gestaltDigitalSignatureVersion = 'dsig'; {Digitial Signature version}
eajt (Easy Access cp [7.0])
gestaltEasyAccessJTable
Returns the base address of the Easy Access jump-trap table.
gestaltEasyAccessJTable = 'eajt'; {Easy Access jump-trap table} *M01
easy (Easy Access cp [7.0?])
gestaltEasyAccessAttr
Returns information about the status of Easy Access.
gestaltEasyAccessAttr = 'easy'; {Easy Access attributes}
gestaltEasyAccessOff = 0; {Easy Access present but off}
gestaltEasyAccessOn = 1; {Easy Access on}
gestaltEasyAccessSticky = 2; {Easy Access "Sticky"}
gestaltEasyAccessLocked = 3; {Easy Access "Locked"}
NOTE:
The values listed above are not returned. Because of a bug different
values are returned. This problem is acknowledged by Apple, but it is
unclear when it will be fixed. They know about it since Sept. 1992...
(Rene Ros)
edtn (System [7.0])
(Macintosh Easy Open? ext [1.0?])
gestaltEditionMgrAttr
Returns information about the Edition Manager.
gestaltEditionMgrAttr = 'edtn'; {Edition Mgr attributes}
gestaltEditionMgrPresent = 0;
gestaltEditionMgrTranslationAware = 1; *AD03
evnt (System [7.0]) *AS05
(Apple Event Manager ext [1.0.1], part of AppleScript Setup 1.0)
gestaltAppleEventsAttr
Returns information about Apple Events.
gestaltAppleEventsAttr = 'evnt'; {Apple events attributes}
gestaltAppleEventsPresent = 0; {True if Apple Events present} *AS05
gestaltScriptingSupport = 1;
gestaltOSLInSystem = 2; {OSL is in system so don`t use}
{the one linked}
MOTE:
Oh oh, what to do with these from PowerPC AEObjects header files
on ETO 14:
gestaltObjectSupportLibraryInSystem = 1,
gestaltObjectSupportLibraryPowerPCSupport = 2
flag (Network Extension ext [System 7.0 *AT02])
gestaltFlagshipAttr
Returns information about the Flagship.
gestaltFlagshipAttr = 'flag'; *M01
gestaltFlagshipPresent = 0; *M01
gestaltFlagshipRegistered = 1; *M01
fndr (Finder [7.1.1b1?]) *AS04
gestaltFinderAttr
Returns information about the Finder?
gestaltFinderAttr = 'fndr';
gestaltFinderDropEvent = 0;
gestaltFinderMagicPlacement = 1;
gestaltFinderCallsAEProcess = 2;
gestaltOSLCompliantFinder = 3;
gestaltFinderSupports4GBVolumes = 4;
gestaltFinderHandlesCFMFailures = 5;
gestalt??? = 6;
fold (System [7.0])
gestaltFindFolderAttr
Returns information about the FindFolder function.
gestaltFindFolderAttr = 'fold'; {FindFolder attributes}
gestaltFindFolderPresent = 0; {FindFolder function available}
font (System [7.0])
(TrueType INIT ext for System 6)
gestaltFontMgrAttr
Returns information about the Font Manager.
gestaltFontMgrAttr = 'font'; {Font Mgr attributes}
gestaltOutlineFonts = 0;
gestalt??? = 1; {set with System 7.1}
gestaltDiskCachedFonts? = 2; {Disk Cached Fonts available?}
NOTE:
Inside the Inline Extension 1.0 with KanjiTalk7, which was compiled
with full subroutine names, there is a subroutine called
'DiskChachedFontsAvailable' in an INIT resource which checks bit 2
of the gestaltFontMgrAttr selector response. (Marco Piovanelli)
fpu (System [6.0.4])
gestaltFPUType
Returns a value that indicates the FPU-type, if any.
gestaltFPUType = 'fpu '; {FPU Type}
gestaltNoFPU = 0; {no FPU}
gestalt68881 = 1; {68881 FPU}
gestalt68882 = 2; {68882 FPU}
gestalt68040FPU = 3; {built-in 68040 FPU} *S01
fs (System [7.0])
gestaltFSAttr
Returns information about the file system.
gestaltFSAttr = 'fs '; {file-system attributes}
gestaltFullExtFSDispatching = 0; {routines _HFSDispatch avail.}
gestaltHasFSSpecCalls = 1; {FSSpec functions available}
gestaltHasFileSystemManager = 2; *S01
gestalt??? = 3; {unknown, System 7.5}
gestalt??? = 4; {unknown, System 7.5}
gestalt??? = 6; {unknown, System 7.5}
NOTES:
File System Manager (version 1.0a3 according to the INIT resource
name) is installed by the 720K Floppy Disk Formatter, part of the
Hardware System Update 2.0 and later.
See 'Reports' chapter (QuickTime section) for more information.
fxfr (System [7.0])
gestaltFXfrMgrAttr
Returns information about the File Transfer Manager.
gestaltFXfrMgrAttr = 'fxfr'; {File Transfer Mgr attributes}
gestaltFXfrMgrPresent = 0; {File Transfer Mgr present}
gestaltFXfrMgrMultiFile = 1; {supports FTSend and FTReceive} *AS02
gestaltFXfrMgrErrorString = 2; {supports FTGetErrorString} *AS02/S02
gval (GestaltValue Glue code)
gestaltValueAddr?
Returns a pointer to a table with the selectors and values managed
by the GestaltValue code. (Marco Piovanelli)
gestaltValueAddr? = 'gval';
WARNING:
Although this information isn't officially confirmed, it is probably
correct.
NOTE:
See 'Reports' chapter (GestaltValue section) for more information.
hdwr (System [6.0.4])
gestaltHardwareAttr
Returns information about the hardware configuration of the machine.
gestaltHardwareAttr = 'hdwr'; {hardware attributes}
gestaltHasVIA1 = 0; {VIA 1}
gestaltHasVIA2 = 1; {VIA 2}
gestaltHasRBV = 2; {RBV} *M01
gestaltHasASC = 3; {ASC}
gestaltHasSCC = 4; {SCC}
gestaltHasOSS = 5; {OSS} *M01
gestaltHasSCSIDMA = 6; {53C80 SCSI DMA} *M01
gestaltHasSCSI = 7; {SCSI}
gestaltHasSWIMIOP = 8; {SWIM IOP} *M01
gestaltHasSCCIOP = 9; {SCC IOP} *M01
gestaltHasFitch = 10; {Fitch memory Controller} *M02
gestaltHasIWM = 11; {IWM} *M01
gestaltHasPWM = 12; {PWM disk speed buffer} *M02
gestaltHasRAMSndBuff = 13; {RAM-based sound buffer} *M02
gestaltHasVideoDAConv = 14; {Video D/A Converter} *M02
gestaltHasPGC = 15; {PGC (parity control)} *M02
gestalt??? = 16; {unknown, found in Speech Mgr ext}
gestalt??? = 17; {unknown, found in Speech Mgr ext}
gestalt??? = 18; {unknown, found in Speech Mgr ext}
gestaltHasSoftPowerOff = 19; {Software PowerOff (since 7.0?)}*S01
gestaltHasSonic = 20; {Sonic} *M01
gestaltHasSCSI961 = 21; {Int. 53C96 SCSI} *AT01
gestaltHasSCSI962 = 22; {Ext. 53C96 SCSI} *AT01
gestaltHasDAFBVideo = 23; {DAFB Video} *M01
gestaltHasUniversalROM = 24; {Universal ROM} *AT04
gestaltHas??? = 27; {set on PowerMac and C660AV}
gestaltHas??? = 30; {set on C660AV, DSP?}
NOTE:
See for more information the TN "M.OV.GestaltSysenvirons" (OV 16).
help (System [7.0])
gestaltHelpMgrAttr
Returns information about the Help Manager.
gestaltHelpMgrAttr = 'help'; {Help Mgr attributes}
gestaltHelpMgrPresent = 0; {Help Mgr present}
gestaltHelpMgrExtensions = 1; {Help Mgr extensions installed}
*AS03
gestalt??? = 31; {unknown, System 7.5}
icon (System [7.0])
gestaltIconUtilities
Returns information about the Icon Utilities routines?
gestaltIconUtilities = 'icon'; {Icon Utils attributes}
gestaltIconUtilitiesPresent = 0;
intd (Powerbook Duo Enabler [1.0])
(System Enabler 111 [1.0])
(System Enabler 121 [1.0])
(System Enabler 131 [1.0])
(System Enabler 201 [1.0])
gestaltInternalDiskAttr?
Returns information about the internal harddisk of portable
computers?
gestaltInternalDiskAttr? = 'intd'; {PB Internal HD attributes}
gestaltHasInternalDisk? = 0; {TRUE if machine has internal HD}
gestaltDiskSpinning? = 1; {TRUE if internal HD is spon up}
gestalt??? = 24; {unknown, set on PB180, PB210,}
{PB540}
NOTES:
This information is from a reliable source. However, is it not
officially confirmed by Apple and there are no constants defined.
On a PB Duo 210 (PowerBook Duo Enabler) I haven't seen bit 1 set, even
when the disk is spinning. (Rene Ros)
kbd (System [6.0.4])
gestaltKeyboardType
Returns a value that indicates the type of keyboard on which the last
keystroke was seen.
gestaltKeyboardType = 'kbd '; {keyboard type}
gestaltMacKbd = 1; {Macintosh Keyboard}
gestaltMacAndPad = 2; {Macintosh Keyboard with Pad}
gestaltMacPlusKbd = 3; {Macintosh Plus Keyboard}
gestaltExtADBKbd = 4; {Extended ADB Keyboard}
gestaltStdADBKbd = 5; {Standard ADB Keyboard}
gestaltPrtblADBKbd = 6; {Portable ADB Keyboard}
gestaltPrtblISOKbd = 7; {Portable ISO ADB Keyboard}
gestaltStdISOADBKbd = 8; {Standard ISO ADB Keyboard}
gestaltExtISOADBKbd = 9; {Extended ISO ADB Keyboard}
gestaltADBKbdII = 10; {ADB Keyboard II}
gestaltADBISOKbdII = 11; {ISO ADB Keyboard II}
gestaltPwrBookADBKbd = 12; {PowerBook Keyboard} *AT01
gestaltPwrBookISOADBKbd = 13; {PowerBook Keyboard (ISO)} *AT01
From the OV Gestalt & SysEnvirons Technical Note:
gestaltAppleAdjustKeypad = 14; {Apple Adjustable Keypad} *AT01
gestaltAppleAdjustADBKbd = 16; {Apple Adjustable Keyboard} *AT01
gestaltAppleAdjustISOKbd = 17; {Apple Adjustable ISO Keyboard}
*AT01
gestaltJapanAdjustADBKbd = 18; {Japan Adjustable Keyboard} *AT01
From the GestaltEqu.h file on E.T.O. #14:
gestaltAppleAdjustKeypad = 14;
gestaltAppleAdjustADBKbd = 15;
gestaltAppleAdjustISOKbd = 16;
gestalt??? = ??; {new AppleDesign extended kbd.}
Combinations of System Global KbdType and gestaltKeyboardType values
======================================================================
KbdType gestaltKeyboardType KbdType gestaltKeyboardType
(hex.) (decimal) (hex.) (decimal)
----------------------------------------------------------------------
$03 1 $0F 18
$13 2 $12 19
$0B 3 $13 20
$02 4 $14 21
$01 5 $15 22
$06 6 $16 23
$07 7 $17 24
$04 8 $18 25
$05 9 $19 26
$08 10 $1A 27
$09 11 $1B 28
$0C 12 $1C 29
$0D 13 $1D 30
$0E 14 $1E 31
$10 15 $1F 32
$11 16 $20 33
$0A 17
======================================================================
(Source: the PTCH 5 resource of the Hardware System Update 2.0
extension.)
NOTES:
The Apple Adjustable Keyboard doesn't has its own gestalt keyboard
type defined with the currently available System Software. It changes
a low memory global but this doesn't change the Gestalt response.
This problem is corrected by the Hardware System Update 2.0 and later.
Since this selector returns the type of the keyboard last touched
and because there can be more than one keyboard this selector is
considered by MacDTS to be obsolete. You should use GetADBInfo
instead. *AD07/AT01
lram (System [6.0.4])
(RAM Doubler [1.0] by Connectix Corporation)
gestaltLogicalRAMSize
Returns the amount of logical memory available in bytes.
gestaltLogicalRAMSize = 'lram'; {logical RAM size}
lmem (System [6.0.4])
gestaltLowMemorySize
Returns the amount of the low-memory area in bytes.
gestaltLowMemorySize = 'lmem'; {low-memory area size}
mach (System [6.0.4]) INF
gestaltMachineType
Returns one of the following values, indicating the type of
machine.
RELEASED
gestaltMachineType = 'mach'; {machine type}
gestaltClassic = 1; {Macintosh 128K}
gestaltMacXL = 2; {Macintosh XL}
gestaltMac512KE = 3; {Macintosh 512KE}
gestaltMacPlus = 4; {Macintosh Plus}
gestaltMacSE = 5; {Macintosh SE}
gestaltMacII = 6; {Macintosh II}
gestaltMacIIx = 7; {Macintosh IIx}
gestaltMacIIcx = 8; {Macintosh IIcx}
gestaltMacSE030 = 9; {Macintosh SE/30}
gestaltPortable = 10; {Macintosh Portable}
gestaltMacIIci = 11; {Macintosh IIci}
gestaltMacIIfx = 12; {Macintosh IIfx}
gestaltMacClassic = 13; {Macintosh Classic}
gestaltMacIIsi = 14; {Macintosh IIsi}
gestaltMacLC = 15; {Macintosh LC}
gestaltQuadra900 = 20; {Macintosh Quadra 900} *AT01
gestaltPowerBook170 = 21; {Macintosh PowerBook 170} *AT01
gestaltQuadra700 = 22; {Macintosh Quadra 700} *AT01
gestaltClassicII = 23; {Macintosh Classic II} *AT01
gestaltPowerBook100 = 24; {Macintosh PowerBook 100} *AT01
gestaltPowerBook140 = 25; {Macintosh PowerBook 140} *AT01
gestaltQuadra950 = 26; {Macintosh Quadra 950} *AT01
gestaltMacLCIII = 27; {Macintosh LC III}
gestaltPowerBook210 = 29; {Macintosh PowerBook 210}
gestaltMacCentris650 = 30; {Macintosh Centris 650}
gestaltPowerBook230 = 32; {Macintosh PowerBook 230}
gestaltPowerBook180 = 33; {Macintosh PowerBook 180}
gestaltPowerBook160 = 34; {Macintosh PowerBook 160}
gestaltMacQuadra800 = 35; {Macintosh Quadra 800}
gestaltMacQuadra650 = 36; {Macintosh Quadra 650} *AT01
gestaltMacLCII = 37; {Macintosh LC II}
gestaltPowerBookDuo250 = 38; {Macintosh PowerBook Duo 250} *AT01
gestaltMacIIvi = 44; {Macintosh IIvi}
gestaltPerforma600 = 45; {Macintosh Performa 600}
gestaltMacIIvx = 48; {Macintosh IIvx}
gestaltMacColorClassic = 49; {Macintosh Color Classic}
gestaltPowerBook165c = 50; {Macintosh PowerBook 165c}
gestaltMacCentris610 = 52; {Macintosh Centris 610}
gestaltMacQuadra610 = 53; {Macintosh Quadra 610} *AT01
gestaltPowerBook145 = 54; {Macintosh PowerBook 145 & 145b}
*AT01
gestaltMacLC520 = 56; {Macintosh LC 520} *AT01
gestaltMacCentris660AV = 60; {Macintosh Centris 660AV} *AT01
gestaltPerforma460 = 62; {Macintosh Performa 460}
gestaltPowerMac8100/80? = 65; {Power Macintosh 8100/80}
gestaltPowerBook180c = 71; {Macintosh PowerBook 180c} *AT01
gestaltPowerBook5xx? = 72; {Macintosh PowerBook 520 & 540?}
gestaltPowerMac6100/60? = 75; {Power Macintosh 6100/60}
gestaltPowerBookDuo270c = 77; {Macintosh PowerBook Duo 270c} *AT01
gestaltMacQuadra840AV = 78; {Macintosh Quadra 840AV} *AT01
gestaltMacLC550 = 80; {Macintosh LC 550} *AT01
gestaltPowerBook165 = 84; {Macintosh PowerBook 165} *AT01
gestaltMacTV = 88; {Macintosh TV}
gestaltMacLC475 = 89; {Macintosh LC 475} *AT01
gestaltMacLC575 = 92; {Macintosh LC 575} *AT01
gestaltMacQuadra605 = 94; {Macintosh Quadra 605} *AT01
gestaltPowerMac7100/66? = 112; {Power Macintosh 7100/66}
gestaltPowerMac700? = 116; {Quadra 700 upgrade card?}
gestaltPowerMac900? = 117; {Quadra 900 upgrade card?}
gestaltPowerMac950? = 118; {Quadra 950 upgrade card?}
gestaltPowerMacC610? = 119; {Centris 610 upgrade card?}
gestaltPowerMacC650? = 120; {Centris 650 upgrade card?}
gestaltPowerMacQ610? = 121; {Quadra 610 upgrade card?}
gestaltPowerMacQ650? = 122; {Quadra 650 upgrade card?}
gestaltPowerMac800? = 123; {Quadra 800 upgrade card?}
Exceptions with systems prior to System 7.1:
gestaltMacLCII = 19; {Macintosh LC & LC II}
{LC has MC68020,LC II has MC68030}
gestaltPowerBook145 = 25; {Macintosh PowerBook 140 & 145}
{processor speed is only}
{difference use GetCPUSpeed from}
{Power Mgr?}
Released unknown
gestaltPowerBookDuo280? = ???; {Macintosh PowerBook Duo 280}
gestaltPowerBookDuo280c?= ???; {Macintosh PowerBook Duo 280c}
And all other released macs and not listed here! I can't keep up with
the new releases... Can you?
Relabeled
Color Classic II = gestaltMacColorClassic? (sold in Japan?)
Performa 200 = gestaltClassicII
Performa 400 = gestaltMacLCII
Performa 405 = gestaltMacLCII
Performa 410 = gestaltMacLCII
Performa 430 = gestaltMacLCII
Performa 450 = gestaltMacLCIII
Performa 466 = gestaltMacLCIII
Performa 467 = gestaltMacLCIII
Performa 475 = gestaltMacLC475
Performa 476 = gestaltMacLC475
Performa 550 = gestaltMacLC550
Performa 575 = gestaltMacLC550?
Performa 600 = gestaltMacIIvx
Performa 600CD = gestaltMacIIvx
PowerMac 6100/60AV = gestaltPowerMac6100/60?
PowerMac 7100/66AV = gestaltPowerMac7100/66?
PowerMac 8100/80AV = gestaltPowerMac8100/80?
Quadra 660AV = gestaltMacCentris660AV
Workgroup Server 60 = gestaltMacCentris610
Workgroup Server 80 = gestaltMacQuadra800
Workgroup Server 95 = gestaltQuadra950
Workgroup Server 95+ = gestaltQuadra950
UNRELEASED (RUMOURED / PRERELEASES)
gestaltPowerMac8100/60? = 64; {Power Macintosh 8100/60}
gestaltPowerMac8100/100?= 66; {Power Macintosh 8100/100}
gestaltPowerMac6100/66? = 100; {Power Macintosh 6100/66}
gestaltPowerMac6100/80? = 101; {Power Macintosh 6100/80}
gestaltPowerMac7100/60? = 111; {Power Macintosh 7100/60}
gestaltPowerMac7100/80? = 113; {Power Macintosh 7100/80}
Unreleased unknown
gestaltPomona??? = ???; {unknown, codename Pomona?}
Pomona is probably the codename of a new line of home and business
machines scheduled for early 1995, with three models:
gestalt??? = ???
gestalt??? = ???
gestalt??? = ???
gestalt??? = 43; {unknown, pre-rel. Tempest/Cyclone}
gestaltPowerBook603? = ???; {unknown, PowerPC 603 PB Duo}
gestaltPowerBook603c? = ???; {unknown, PowerPC 603 PB Duo, color}
gestaltPowerBookDuo290? = ???; {PowerBook Duo with PPC 603?}
gestaltPowerBookDuo290c?= ???; {PowerBook Duo color with PPC 603?}
gestaltPowerBookLC? = ???; {Macintosh PowerBook LC?}
gestaltPowerMac9100/?? ?= ???; {Power Macintosh 9100/?? ?}
gestaltTNTPowerMacs? = ???; {TNT PowerMacs}
Relabeled
Performa 560 = gestaltMacLC550?
Performa 576 = gestaltMacLC550?
Performa 578 = gestaltMacLC550?
PowerMac WGS 6150 = gestaltPowerMac6100/60?
PowerMac WGS 8150 = gestaltPowerMac8100/80?
PowerMac WGS 9150 = gestaltPowerMac9100/?? ?
NOTES:
I don't know what constant names will be used for the PowerMacs. The
slash is not a valid character but I leave it in for the moment.
(Rene Ros)
The Power Macintosh computers also set the three low bits of a 32-bit
register at address $5FFF FFFC to a machine identification code.
Power Macintosh register identification codes
======================================================================
Machine Register bits
----------------------------------------------------------------------
gestaltPowerMac6100? 000
gestaltPowerMac7100? 010
gestaltPowerMac8100? 011
----------------------------------------------------------------------
The Performa 600 was originally planned to ship as Macintosh IIvm
but the name was changed because users thought 'vm' meant 'Virtual
Memory'. MOST system enablers (i.e. 001, 040, 065 & 201) still
contain this original name.
The Developer Notes (available on ftp.apple.com and on the Developer
CD-ROM Series, amongst others) about Macintosh models provide in
several cases wrong or incomplete information regarding the machine
type returned by the Gestalt Manager.
You can use the returned value as an index with GetIndString
to get the machine's name. The STR# resource ID is:
kMachineNameStrID = -16395;
On Macintosh Performas, the Machine Name STR# resource will always
return the string "Macintosh" (not "Macintosh Performa 450" or
"Performa 450"). On all other Macintoshes, the string will return
the correct name. (Mark Dawson)
All system enablers have a STR# resource -16395 (kMachineNameStrID)
included to replace the one in the System file. In most cases this
resource lists the same Macintosh names as the original one in
System 7.1 and adds the names of the machines the enabler is intended
for. But some only list the machines the enabler is used with.
Therefore, if you want to display the name of a machine which isn't
of the current machine type you can't rely on this resource anymore.
Using the archive mail server you can obtain a ResEdit file with the
complete machine name string resource. The command to use is
archive get src/machname-str.sit.hqx
I will keep this one up-to-date along with the changes in this 'mach'
entry. (Rene Ros)
(Sources of relabled and unreleased machines:
MacFacts Two by J.D.S. Babcock <jdsb@ee.duke.edu>;
Duo FAQ by Nicholas C. De Mello <nick@pitt.edu>)
malr (PowerTalk ext [1.0?], part of System 7.1 Pro and System 7.5)
gestaltSMPMailerVersion
Returns the SMP Mailer version as INTEGER.
gestaltSMPMailerVersion = 'malr'; {SMP Mailer version}
micn (System [6.0.4]) INF
gestaltMachineIcon
Returns an icon family resource ID for the current type of
Macintosh.
gestaltMachineIcon = 'micn'; {machine ICON/cicn res ID}
NOTE:
The icon resource ID returned is based on the gestaltMachineType
response which is used as an index into a table. This table of
resource IDs differs for most System Software versions (and
enablers). If you really want to know the icon resource ID of a
machine which is not the current machine you have the following
options:
- Write a GDEF to replace the 'mach' selector, let this GDEF return
the original gestaltMachineType unless a certain selector exists.
Create this selector with the GestaltValue code and make it loop
from 1 to the number of items in the STR# kMachineNameStrID
resource, let the custom GDEF return this as the machine type so
the gestaltMachineIcon selector will use this to look up the icon
resource ID. Then remove the GestaltValue selector and restore the
original gestaltMachineType selector.
- Get the entrypoint of the gestaltMachineIcon GDEF, jump into the
GDEF a few bytes further (and thus skipping the gestalt call using
the gestaltMachineType selector), emulate a genuine call to Gestalt
by setting the A0 (response, the machineType you want) and
D0 (result) registers correct.
- Determine the start of the table, which is located in memory before
the entrypoint of the gestaltMachineIcon GDEF code, and calculate
the offset to the icon resource ID you need. If you want code which
does this, you can contact me (Rene Ros) an I will sent you some
Pascal source code.
(David Greenspon, Michael Hecht and Rene Ros)
misc (System [6.0.5])
gestaltMiscAttr
Returns information about miscellaneous pieces of software or
hardware.
gestaltMiscAttr = 'misc'; {miscellaneous attributes}
gestaltScrollingThrottle = 0;
gestaltBootGlobals = 1; {Boot Globals} *M02
gestaltSquareMenuBar = 2;
mixd (System? [7.1.2?])
gestaltMixedModeAttr
Returns information about the Mixed Mode Manager.
gestaltMixedModeAttr = 'mixd'; {Mixed Mode Mgr attributes}
gestaltPowerPCAware = 0; {True if MMMgr Supports PowerPC}
mmu (System [6.0.4])
gestaltMMUType
Returns a value that indicates the type of MMU currently installed,
if any.
gestaltMMUType = 'mmu '; {MMU Type}
gestaltNoMMU = 0; {no MMU}
gestaltAMU = 1; {AMU}
gestalt68851 = 2; {68851 MMU}
gestalt68030MMU = 3; {built-in 68030 MMU}
gestalt68040MMU = 4; {68040/68LC040 built-in} *S01
gestaltEMMU1 = 5; {Emulated MMU type 1, PowerPC MMU} *AS05
nlup (System [7.0])
gestaltStdNBPAttr
Returns information about the call StandardNBP.
gestaltStdNBPAttr = 'nlup'; {Standard NBP attributes}
gestaltStdNBPPresent = 0;
gestalt??? = 1; {unknown, System 7.5}
nmgr (System [6.0.5])
gestaltNotificationMgrAttr
Returns information about the Notification Manager.
gestaltNotificationMgrAttr = 'nmgr'; {Notification Mgr attributes}
gestaltNotificationPresent = 0;
nubs (System [6.0.4, 6.0.5, 6.0.7, discontinued])
gestaltNuBusSlotCount
Returns count of NuBus slots.
gestaltNuBusSlotCount = 'nubs'; {NuBus slot count}
ocet (PowerTalk Manager ext [1.0?], part of System 7.1 Pro and System 7.5)
gestaltOCEToolboxVersion
Returns the versions of the S&F Server and the OCE Toolbox as BCD.
gestaltOCEToolboxVersion = 'ocet'; {OCE Toolbox version}
gestaltOCETB = $0100; {current OCE Toolbox version 1.0}
gestaltSFServer = $0100; {current S&F Server version 1.0}
NOTE:
The high order word will represent the S&F Server version number, and
the low order the OCE Toolbox version number both as BCD.
These will be zero until the component is up and running.
oceu (PowerTalk Manager ext [1.0?], part of System 7.1 Pro and System 7.5)
gestaltOCEToolboxAttr
Returns information about the Open Colloboration Environment Toolbox.
gestaltOCEToolboxAttr = 'oceu'; {OCE Toolbox attributes}
gestaltOCETBPresent = $1; {OCE toolbox is present,}
{not running}
gestaltOCETBAvailable = $2; {OCE toolbox is running and}
{available}
gestaltOCESFServerAvailable = $4; {S&F Server is running and}
{available}
NOTE:
Any (future) remaining OCE attributes may not be established
correctly until the attribute gestaltOCETBAvailable is set.
os (System [6.0.4, 7.0 and later])
(Process Manager INIT ext [???], part of System 7.1 Pro and
System 7.5 ?)
gestaltOSAttr
Returns general information about the Operating System.
gestaltOSAttr = 'os '; {O/S attributes}
gestaltSysZoneGrowable = 0;
gestaltLaunchCanReturn = 1;
gestaltLaunchFullFileSpec = 2;
gestaltLaunchControl = 3;
gestaltTempMemSupport = 4;
gestaltRealTempMemory = 5;
gestaltTempMemTracked = 6;
gestaltIPCSupport = 7;
gestaltSysDebuggerSupport = 8;
gestaltSkiaGlobalsSwitched = 9; *AS05
gestaltBgndMouseDownSupport = 10; *AS04
gestalt??? = 11; {set on PowerPC}
gestalt??? = 13; {unknown, System 7.5}
gestalt??? = 14; {unknown, System 7.5}
NOTES:
See the Process Manager chapter in IM Processes for more information
about the launch control features. And the Memory Manager chapter in
IM Memory about the memory features.
The header file which lists the gestaltSkiaGlobalsSwitched bit says
this:
/*gestaltSkiaGlobalsSwitched is #9. I don't know why it is not here*/
"Skia" is the code name for QuickDraw GX (MacsBug uses it for trap
$A832, which is the main QuickDraw GX trap).
(Lawrence D'Oliveiro, Anonymous)
ostt (System [6.0.8?])
gestaltOSTable
Returns the base address of the Operating System trap table.
gestaltOSTable = 'ostt'; {O/S trap table base}
osyv (sysvINIT ext [???] by T. Tanaka, Apple Computer Japan Inc.) INF
gestaltOldSystemVersion?
Returns the version of the system file as BCD which was returned
before sysvINIT replaced the gestalt definition with a corrected one.
gestaltOldSystemVersion? = 'osyv';
NOTE:
Because of a bug with KanjiTalk 6.0.7 this extension (snippet code,
available on Developer CD-ROM Series) replaces the standard 'sysv'
Gestalt Definition (GDEF) with a corrected one to return $0x0607 and
installs the 'osyv' selector which uses the replaced gestalt
definition. *M03
pcxg (System? [???]) *AS04/AS05
gestaltPCXAttr
Returns information about PC Exchange.
gestaltPCXAttr = 'pcxg'; {PC Exchange attributes}
gestaltPCXHas8and16BitFAT = 0; {PC Exchange supports both 8 and}
{16 bit FATs}
gestaltPCXHasProDOS = 1; {PC Exchange supports ProDOS}
pgsz (System [6.0.4])
(RAM Doubler [1.0] by Connectix Corporation)
gestaltLogicalPageSize
Returns the logical page size in bytes.
gestaltLogicalPageSize = 'pgsz'; {logical page size}
NOTE:
The value is unknown on 68000 machines, Gestalt will return an error.
pop! (System [7.0])
gestaltPopupAttr
Returns information about the pop-up control definition.
gestaltPopupAttr = 'pop!'; {pop-up CDEF attributes}
gestaltPopupPresent = 0; {pop-up CDEF available}
powr (System [6.0.4])
gestaltPowerMgrAttr
Returns information about the Power Manager, if present.
gestaltPowerMgrAttr = 'powr'; {Power Mgr attributes}
gestaltPMgrExists = 0;
gestaltPMgrCPUIdle = 1;
gestaltPMgrSCC = 2;
gestaltPMgrSound = 3;
gestaltPMgrDispatchExists = 4;
ppc (System [7.0])
gestaltPPCToolboxAttr
Returns information about the capabilities of the PPC Toolbox.
gestaltPPCToolboxAttr = 'ppc '; {PPC Toolbox attributes}
gestaltPPCToolboxPresent = $0x0000; {Requires PPCInit to be called}
gestaltPPCSupportsIncoming = $0x0001; {Deny incoming net requests}
gestaltPPCSupportsOutGoing = $0x0002; {Deny outgoing net requests}
gestaltPPCSupportsRealTime = $0x1000; {Supports real-time delivery}
NOTE:
The first thing that is confusing is that, unlike other selectors
returning attributes, the responses are not bit values, but bit masks.
This means you simply AND the value with the response to test the bit.
The second thing that is confusing is how to interpret
gestaltPPCToolboxPresent = $0x0000.
What this means is that if the PPC toolbox is present, but has not
been initialised (by calling PPCInit), then gestaltPPCToolboxAttr
returns $0x0000. In reality, PPCInit gets called by the Process
Manager before any applications get launched, so no applications will
actually see this response. (Dave Radcliffe)
proc (System [6.0.4])
gestaltProcessorType
Returns a value that indicates the type of processor that is
currently running (or emulated on Power Macs?).
gestaltProcessorType = 'proc'; {processor type}
gestalt68000 = 1; {MC68000}
gestalt68010 = 2; {MC68010}
gestalt68020 = 3; {MC68020}
gestalt68030 = 4; {MC68030}
gestalt68040 = 5; {MC68040} *S01
NOTE:
The 68LC040 responds as type gestalt68040 but doesn't has a FPU. The
user can swap out the 68LC040 and put in a real 68040 with FPU, so
just checking the machineType or the processorType isn't enough.
(Dave Radcliffe)
prpv (PowerTalk ext [1.0?], part of System 7.1 Pro and System 7.5)
gestaltSDPPromptVersion
Returns the SDP Prompt version as INTEGER.
gestaltSDPPromptVersion = 'prpv'; {SDP Prompt version}
prty (System [6.0.4])
gestaltParityAttr
Returns information about the parity-checking abilities of the
machine.
gestaltParityAttr = 'prty'; {parity attributes}
gestaltHasParityCapability = 0;
gestaltParityEnabled = 1;
qd (System [6.0.4])
gestaltQuickDrawVersion
Returns the version of QuickDraw currently present as a 2-byte value.
gestaltQuickDrawVersion = 'qd '; {QuickDraw version}
gestaltOriginalQD = $000;
gestaltOriginalQD1 = $001;
gestalt8BitQD = $100;
gestalt32BitQD = $200;
gestalt32BitQD11 = $210;
gestalt32BitQD12 = $220;
gestalt32BitQD13 = $230;
gestalt32BitQD135? = $235; {with System 7.1.2, ROM = 3072K?}
Possible Combinations of ROM Versions and System Software Versions
======================================================================
ROM Class System Version Gestalt Value
----------------------------------------------------------------------
Black-and-white class < 7.0 gestaltOriginalQD
(ROM < 256K) >= 7.0 gestaltOriginalQD and
gestaltSystemVersion >= $0700
Color QD class < 7.0, no INITs gestalt8BitQD
(ROM = 256K) 6.0.3/6.0.4 and gestalt32BitQD
32-Bit QD INIT 1.0
6.0.5-6.0.8 and gestalt32BitQD12
32-Bit QD INIT 1.2
>= 7.0 gestalt32BitQD13
ci class 6.0.4 gestalt32BitQD + 1
(ROM > 256K) 6.0.5-6.0.8 gestalt32BitQD12
>= 7.0 gestalt32BitQD13
======================================================================
(Source: Develop Issue 14, June 1993, p. 55)
NOTE:
gestalt32BitQD11 is never returned and gestalt32BitQD + 1 means
$0x0201 as respone value and doesn't has a constant defined.
qdrw (System [7.0])
gestaltQuickDrawFeaturesAttr
gestaltQuickDrawFeaturesAttr = 'qdrw'; {QuickDraw attributes} *S01
gestaltHasColor = 0; *S01
gestaltHasDeepGWorlds = 1; *S01
gestaltHasDirectPixMaps = 2; *S01
gestaltHasGrayishTextOr = 3; *S01
gestalt??? = 4; {unknown, System 7.5}
NOTE:
There is a bug in the 'qdrw' selector that causes it to report that
Color QuickDraw is always present, even on machines that don't support
it. Apple has acknowledged this bug on AppleLink. (Chris Wysocki)
Use SysEnvirons instead or test for the QD version ('qd ') being
8-bit QD or later.
ram (System [6.0.4])
(RAM Doubler [1.0] by Connectix Corporation)
gestaltPhysicalRAMSize
Returns the number of bytes of the physical RAM currently installed.
gestaltPhysicalRAMSize = 'ram '; {physical RAM}
rbv (System [6.0.4, discontinued?]) *AS04
gestaltRBVAddr
Returns the address of the RBV?
gestaltRBVAddr = 'rbv '; {RBV address}
rom (System [6.0.4]) INF
gestaltROMSize
Returns the size of the installed ROM in bytes.
gestaltROMSize = 'rom '; {ROM size}
romv (System [6.0.4]) INF
gestaltROMVersion
Returns the version number of the installed ROM.
gestaltROMVersion = romv'; {ROM version}
rsrc (System [should work since 7.0?])
gestaltResourceMgrAttr
Returns information about the Resource Manager.
gestaltResourceMgrAttr = 'rsrc'; {Resource Mgr attributes}
gestaltPartialRsrcs = 0;
gestalt??? = 1; {unknown}
NOTE:
Under System 7, bit 0 that tells if you have partial resource support
doesn't work right. The selector is undefined under System 7.0 and
7.0.1 even though the partial resource calls are available. This has
been acknowledged by Apple.
(Michael Hecht, Quinn)
rtmr (System? [7.1.1?])
gestaltRealtimeMgrAttr
Returns information about the Realtime Manager.
gestaltRealtimeMgrAttr = 'rtmr'; {Realtime Mgr attributes}
gestaltRealtimeMgrPresent = 0; {Realtime Mgr is present}
NOTE:
If the RealTime Mgr is present this means the ARTA routines are
available to determine if and how many DSPs are installed.
(Zalman Stern)
sccr (System [6.0.4, discontinued]) *AS04
gestaltSCCReadAddr
Returns the address of SCC read ports.
gestaltSCCReadAddr = 'sccr'; {SCC read ports address}
sccw (System [6.0.4, discontinued]) *AS04
gestaltSCCWriteAddr
Returns the address of SCC write ports.
gestaltSCCWriteAddr = 'sccw'; {SCC write ports address}
scr# (System [6.0.4])
gestaltScriptCount
Returns the number of script systems currently active.
gestaltScriptCount = 'scr#'; {number of active scripts}
scri (System [6.0.4])
gestaltScriptMgrVersion
Returns the version number of the Script Manager as BCD.
gestaltScriptMgrVersion = 'scri'; {Script Mgr version}
Version numbers for the Script Manager
======================================================================
System Version Script Mgr Script Mgr Version
(older ROMs)+ (newer ROMs) format
----------------------------------------------------------------------
6.0.3 and earlier <= $20F N.A. binary
6.0.4 Roman $211 $215 "
6.0.4 non-Roman $212 $216 "
6.0.5 $213 $217 (=2.23) "
6.0.7 $230 $231 BCD
J-6.0.7.1 $230 $231 "
6.0.8 $230 $231 "
6.1 non-Roman $240 $241 "
7.0 $700 $700 "
7.0.1 Roman $701 $701 "
7.0.1 non-Roman $701 $701 "
7.1 $710 $710 "
+ Plus,SE,II,IIx,IIcx,SE/30,Classic
======================================================================
(Source: Inside Macintosh Text, p. 6-9)
sdvr (PowerTalk ext [1.0?], part of System 7.1 Pro and System 7.5)
gestaltSDPStandardDirectoryVersion
Returns the SDP Standard Directory version as INTEGER.
gestaltSDPStandardDirectoryVersion = 'sdvr'; {SDP Standard Directory}
{version}
WARNING:
The same selector code is used by the Control Strip control panel.
See the same entry with the Apple Additional Software section.
ser (System [6.0.8?])
gestaltSerialAttr
Returns information about the serial hardware of the machine.
gestaltSerialAttr = 'ser '; {serial hardware attributes}
gestaltGPIaToDCDa = 0;
gestaltGPIaToRTxCa = 1;
gestaltGPIaToDCDb = 2;
slot (System [6.0.4, 6.0.5, discontinued])
gestaltSlotAttr
Returns information about the Slot Manager.
gestaltSlotAttr = 'slot'; {Slot Mgr attributes}
gestaltSlotMgrExists = 0;
gestaltNuBusPresent = 1;
gestaltSESlotPresent = 2;
gestaltSE30SlotPresent = 3;
gestaltPortableSlotPresent = 4;
slt1 (System [6.0.4, 6.0.5, discontinued])
gestaltFirstSlotNumber
Returns first slot number.
gestaltFirstSlotNumber = 'slt1'; {First Slot number}
sltc (System [6.0.8?])
gestaltNuBusConnectors
Returns information about the NuBus slot connector locations. The
value returned is a bitmap. If bits 9 to E are set, there are six
slots present with locations 9 to E.
gestaltNuBusConnectors = 'sltc'; {NuBus connector bitmap}
NOTE:
This selector does not return information about the Macintosh IIsi
slot.
snd (System [6.0.4])
gestaltSoundAttr
Returns information about the sound capabilities of the machine.
gestaltSoundAttr = 'snd '; {sound attributes}
gestaltStereoCapability = 0; {can play stereo sounds}
gestaltStereoMixing = 1; {mixes channels into single}
{signal}
gestaltSoundReserved = 2;
gestaltSoundIOMgrPresent = 3; {new sound input routines avail.}
gestaltBuiltInSoundInput = 4; {built-in sound input device
{available}
gestaltHasSoundInputDevice = 5; {some sound input device avail.}
gestaltPlayAndRecord = 6; {built-in hardware can play and}
{record simultaneously}
*AS03/AS04
gestalt16BitSoundIO = 7; {sound hardware can play and}
{record 16-bit samples} *AS04
gestaltStereoInput = 8; {sound hardware can record}
{stereo} *AS04
gestaltLineLevelInput = 9; {sound input port requires}
{line level} *AS04
gestaltSndPlayDoubleBuffer = 10; {play from disk available} *AS04
gestaltMultiChannels = 11; {multiple channel support}
*AS03/AS04
gestalt16BitAudioSupport = 12; {16 bit audio data supported}
*AS04
NOTE:
If the gestaltSndPlayDoubleBuffer flag is not set you can check for
the gestaltHasASC flag with the gestaltHardwareAttr selector. If this
is true both SndPlayDoubleBuffer and SndStartFilePlay are present.
*AD06
spsl (PowerTalk ext [1.0?], part of System 7.1 Pro and System 7.5)
gestaltSMPSPSendLetterVersion
Returns the SMP SendLetter version as INTEGER.
gestaltSMPSPSendLetterVersion = 'spsl'; {SMP Sendletter version}
stdf (System [7.0])
(Macintosh Easy Open ext? [1.0?])
gestaltStandardFileAttr
Returns information about the Standard File Package.
gestaltStandardFileAttr = 'stdf';
{Standard File attributes}
gestaltStandardFile58 = 0;
{StandardPutFile, StandardGetFile, CustomPutFile}
{and CustomGetFile are available.}
gestaltStandardFileTranslationAware = 1; *AD03/AS04
gestaltStandardFileHasColorIcons = 2; *AD03/AS04/AS05
gestaltStandardFileUseGenericIcons = 3;
{force the LDEF to use only the system generic icons} *AT06
gestaltStandardFileHasDynamicVolumeAllocation = 4;
{supports more than 20 volumes} *AT06
sysa (System [7.1.2?]) *AS04
gestaltSysArchitecture
Returns one of the following values, indicating the type of
architecture on which the application is currently running.
gestaltSysArchitecture = 'sysa'; {System Architecture type}
gestalt68k = 1;
gestaltPowerPC = 2;
sysv (System [6.0.4]) INF
gestaltSystemVersion
Returns the version number of the currently active System file as BCD.
gestaltSystemVersion = 'sysv'; {System file version}
NOTES:
Is it correct system 6.0.8 returns $0x0607? Can you determine if it is
actually 6.0.8 in another way?
The hard way to change the result value is to change the PTCH resource
with ID# 0 in the System file. Change the word $07 at offset $0x00ED
to $08.
System Resource Offset Data
Version Type ID#
6.0.4 PTCH 0 0x005E 0604
6.0.8 PTCH 0 0x00EC 0607
7.0 PTCH 0 0x056E 0700
7.0.1 PTCH 0 0x0578 0701
7.1 PTCH 0 0x057C 0710
In addition KanjiTalk 6.0.7 (Japanese System) and other non-Roman
versions return $0606. See the 'osyv' selector.
System J-6.0.7.1 returns $0609
There are some system versions (like International System 6.0.8.1 or
7.0.1.1) which just return the normal version number, i.e. 6.0.8 and
7.0.1.
tabl (System [6.0.4])
gestaltSelectorTable?
Returns a handle to the Gestalt selector table itself.
gestaltSelectorTable? = 'tabl'; {Gestalt Table address}
WARNING:
Although this information isn't officially confirmed, it is probably
correct.
NOTE:
The Gestalt selector table is kept in a resizable block in the system
heap. The last item in the table is a dummy entry (INVALID), marked by
a selector OSType(MaxLongInt). (Marco Piovanelli, he also has some
snippet Pascal code to list all selectors)
tbtt (System [6.0.8])
gestaltToolboxTable
Returns the base address of the Toolbox trap table.
gestaltToolboxTable = 'tbtt'; {Toolbox trap table base}
te (System [6.0.5])
gestaltTextEditVersion
Returns a value that indicates which version of TextEdit is present.
gestaltTextEditVersion = 'te '; {TextEdit version}
gestaltTE1 = 1;
gestaltTE2 = 2;
gestaltTE3 = 3;
gestaltTE4 = 4;
gestaltTE5 = 5;
Version numbers for TextEdit
======================================================================
Returned value New Features System software Hardware
----------------------------------------------------------------------
gestaltUndefSelector Multistyled TE before 6.0.4 all
gestaltTE1 6.0.4 Roman IIci
gestaltTE2 New width 6.0.4 non-Roman IIci
measurement hook
Script Mgr compatible
gestaltTE3 6.0.4 non-Roman non-IIci
gestaltTE4 TEFeatureFlag 6.0.5 all
gestaltTE5 Text width 7.0 all
measurement hook
======================================================================
(Source: Inside Macintosh Text, p.2-23)
term (System [7.1])
gestaltTermMgrAttr
Returns information about the Terminal Manager.
gestaltTermMgrAttr = 'term'; {Terminal Mgr attributes}
gestaltTermMgrPresent = 0; {Terminal Mgr is present}
gestaltTermMgrErrorString = 2; *AS04
tmgr (System [6.0.4])
gestaltTimeMgrVersion
Returns a value that indicates the version of the Time Manager.
gestaltTimeMgrVersion = 'tmgr'; {Time Mgr version}
gestaltStandardTimeMgr = 1; {Standard Time Mgr}
gestaltRevisedTimeMgr = 2; {Revised Time Mgr}
gestaltExtendedTimeMgr = 3; {Extended Time Mgr}
tsmv (System [7.1])
gestaltTSMgrVersion *AT05
Returns Text Services Manager version in BCD.
gestaltTSMgrVersion = 'tsmv'; {Text Services Mgr version}
vers (System [6.0.4])
gestaltVersion
Returns the version of Gestalt as INTEGER.
gestaltVersion = 'vers'; {Gestalt version}
NOTE:
Usually version 1 is present. On machines with ROM version 1917
(Quadra 840AV, PowerMacs etc.) version 4 is present.
via1 (System [6.0.4, discontinued])
gestaltVIA1Addr
Returns the address of VIA 1.
gestaltVIA1Addr = 'via1'; {VIA 1 address}
via2 (System [6.0.4, discontinued])
gestaltVIA2Addr
Returns the address of VIA 2.
gestaltVIA2Addr = 'via2'; {VIA 2 address}
vm (System [6.0.4])
(RAM Doubler [1.0] by Connectix Corporation)
gestaltVMAttr
Returns information about virtual memory.
gestaltVMPresent = 0; {set; virtual memory present}
gestaltVMNotInstalled = 0; {clear; virtual memory not present}
wma. (System [7.0])
(Responder ext [2.0?])
gestaltResponderAttr
Returns information about the Workstation Management Agent a.k.a.
Responder.
gestaltResponderAttr = 'wma.'; {Responder attributes}
gestaltResponderPresent = 0; {Responder is present}
xttt (System [6.0.8])
gestaltExtToolboxTable
Returns the base address of the Extended Toolbox trap table.
gestaltExtToolboxTable = 'xttt'; {Extened Toolbox trap table}
Apple Additional Software
-------------------------
arb (Serial Port Arbitrator ext [1.0], part of Apple Remote Access)
gestaltArbitorAttr *AD02
Returns information about the Serial Port Arbitration.
gestaltArbitorAttr = 'arb '; {Serial Port Arbitration}
{attributes}
gestaltSerialArbitrationExists = 0; {Serial Port Arbitration}
{installed}
ascr (AppleScript ext [1.0])
gestaltAppleScriptAttr *AS08
Returns information about AppleScript.
gestaltAppleScriptAttr = 'ascr'; {AppleScript attributes}
gestaltAppleScriptPresent = 0,
gestaltAppleScriptPowerPCSupport = 1
NOTE:
OSA is the Open Scripting Architecture. It is the layer upon which all
scripting languages sit and the method by which applications call
scripts. (Jon Pugh)
ascv (AppleScript ext [1.0])
gestaltAppleScriptVersion *AS08
Returns the version of AppleScript as NumVersion.
gestaltAppleScriptVersion = 'ascv'; {AppleScript version}
NOTE:
AppleScript 1.1 returns $01100110 which doesn't look like a proper
version number (version 1.0 returned $01008000). (Rene Ros)
aucd (Audio CD Access ext [4.0], part of Apple CD-ROM Software) *AT03
gestaltAudioCDAccessVersion?
Returns Audio CD Access version in BCD.
gestaltAudioCDAccessVersion? = 'aucd'; {Audio CD Access version}
NOTE: The returned version is obtained from 'vers' resource ID# 1.
cltn (QuickDraw GX [1.0])
gestaltCollectionMgrVersion
Returns the version of the Collection Manager as NumVersion.
gestaltCollectionMgrVersion = 'cltn'; {Collection Mgr version}
NOTE:
The Collection Manager is a set of routines for maintaining tagged
collections of data; GX uses it to support the "tags" that you can
attach to GX objects, for holding special data, including
user-defined data. (Lawrence D'Oliveiro)
cmta (ColorSync ext [1.0.4?]
gestaltColorMatchingAttr *AS09
Returns information about the ColorSync Utilities?
gestaltColorMatchingAttr = 'cmta';
gestaltHighLevelMatching = 0;
gestaltSharedLibLoaded = 1;
cmtc (ColorSync ext [1.0?])
gestaltColorMatchingVersion
Returns the version of the Color Matching software as BCD.
gestaltColorMatchingVersion = 'cmtc'; {Color Matching version}
gestaltColorSync10 = $0x0100; *AS09
gestaltColorSync11 = $0x0110; *AS09
gestaltColorSync104 = $0x0104; *AS09
cpkr (Color Picker ext [2.0?], part of ColorSync Software)
gestaltColorPickerMgrAttr
Returns information about the Color Picker Manager.
gestaltColorPickerMgrAttr = 'cpkr'; {ColorPicker Mgr attributes}
gestaltColorPickerMgrPresent? = 0?; {ColorPicker Mgr Present}
(Marco Piovanelli, Lawrence D'Oliveiro)
NOTE:
Extension version 2.0a4 returns a response ($0x0001) which is
according to the info above. Version 2.0a5 however returns $0x0100, is
this an error?
drag (Macintosh Drag and Drop ext [1.0])
gestaltDragMgrAttr *AD05
Returns information about the Drag Manager.
gestaltDragMgrAttr = 'drag'; {Drag Manager attributes}
gestaltDragMgrPresent = 0; {Drag Manager is present}
gestaltDragMgrFloatingWind = 1; *AS10
gestaltPPCDragLibPresent = 2; *AS10
gestalt??? = 31;
gfxa (QuickDraw GX [1.0])
gestaltGraphicsAttr
Returns information about the Graphics.
gestaltGraphicsAttr = 'gfxa'; {graphics attributes bits }
gestaltGraphicsIsDebugging = 0;
gestaltGraphicsIsLoaded = 1;
gestaltGraphicsIsPowerPC = 2;
grfx (QuickDraw GX ext [1.0])
gestaltGraphicsVersion
Returns the version of the Graphics as INTEGER.
gestaltGraphicsVersion = 'grfx'; {Gestalt version selector}
gestaltCurrentGraphicsVersion = 16; {supposed value returned}
NOTE:
QuickDraw GX beta 3 returns 19. And System 7.5 with QD GX on a PB 540c
returns 65536...
hscd (High Sierra File Access ext [4.0], part of Apple CD-ROM Software)
*AT03
gestaltHighSierraFAVersion?
Returns High Sierra File Access version in BCD.
gestaltHighSierraFAVersion? = 'hscd'; {High Sierra Fileaccess version}
NOTE: The returned version is obtained from 'vers' resource ID# 1.
icmp (QuickTime ext [1.0])
gestaltCompressionMgr
Returns Compression Manager version as Integer
gestaltCompressionMgr = 'icmp'; {determines if Image Compression}
{manager is available} *AS01
kids (At Ease [1.0])
kAtEaseGestalt
Returns a handle to a structure holding information about At Ease.
The following code was published by Apple *AT06:
#define kAtEaseGestalt 'kids'
typedef struct {
short giVersion; /* structure version */
short giIsActive; /* true if at ease is currently running */
short giAutoCreateAlias; /* if true then auto create alias */
short giRequestFloppy; /* if true then request floppy on new
saves */
short giStacksAreApps; /* if true then HyperCard stacks are shown
with applications */
FSSpec giItemsLocation; /* location of the At Ease Items folder */
} GestaltRec, *GestaltRecPtr, **GestaltRecHand;
kpcd (Apple Photo Access ext [1.0], part of Apple CD-ROM Software) *AT03
gestaltApplePhotoAccessVersion?
Returns Apple Phote Access version in BCD.
gestaltApplePhotoAccessVersion? = 'kpcd';
NOTE:
The above is what the documentation says. However it seems to return
always $FFFFFF7 as response.
mess (QuickDraw GX [1.0])
gestaltMessageMgrVersion
Returns the version of the Message Manager as NumVersion.
gestaltMessageMgrVersion = 'mess'; {Message Mgr version}
NOTE:
The Message Manager is an implementation of object-oriented-style
message passing within an inheritance hierarchy, that can be used from
non-OO languages.
It is used by the GX printing system, to allow the customization of
printing behaviour by letting applications (and developers of printing
extensions) intercept messages sent to the printer driver.
(Lawrence D'Oliveiro)
mtcp (MacTCP cp [1.1])
gestaltMacTCPAttr? *AD01
Returns the version of MacTCP, if opened, as an index-value.
Response Version
====================
1 1.1
2 1.1.1
3 2.0
If MacTCP is not opened a value of 0 is returned.
No constants are defined in the documentation.
pmgr (QuickDraw GX [1.0])
gestaltPrintingMgrVersion
Returns the version of the QuickDraw GX Printing Manager as
NumVersion.
gestaltPrintingMgrVersion = 'pmgr'; {Printing Mgr version}
NOTE: System 7.5 with QD GX on a PB 540c returns 65536...
qdgx (QuickDraw GX [1.0])
gestaltGXVersion
Returns the version of QuickDraw GX as NumVersion.
gestaltGXVersion = 'qdgx'; {QuickDraw GX version}
NOTE: System 7.5 with QD GX on a PB 540c returns 65536...
qtim (QuickTime ext [1.0])
gestaltQuickTime
Returns QuickTime version as NumVersion.
gestaltQuickTime = 'qtim'; {Movie Toolbox Availability}
NOTES:
The returned version is obtained from 'vers' resource ID# 1.
See 'Reports' chapter (QuickTime section) for more information.
qtrs (QuickTime PowerPlug ext [1.0?])
gestaltQuickTimeFeatures *AS06
gestaltQuickTimeFeatures = 'qtrs'; {QT Features attributes}
gestaltPPCQuickTimeLibPresent = 0, {PowerPC QT glue library is}
{present}
NOTE:
The gestaltPPCQuickTimeLibPresent bit indicates that the native
QuickTime interface library is available and can be called by native
PowerPC applications. (Dave Radcliffe)
scra (Macintosh Easy Open ext? [1.0]) *AD03
gestaltScrapMgrAttr
Returns information about the Scrap Manager.
gestaltScrapMgrAttr = 'scra'; {Scrap Mgr attributes}
gestaltScrapMgrTranslationAware = 0;
gestaltTranslationMgrHintOrder = 1; *AS04
sdev (Control Strip cp [1.0], part of ???)
gestaltControlStripAttr
Returns information about the Control Strip software.
gestaltControlStripAttr = 'sdev';
gestaltControlStripExists = 0; {TRUE = control strip is installed}
NOTE:
Control Strip displays a bar with icons and popup menus to quickly
change settings on portable macs, i.e. AppleTalk and the sound volume.
sdvr (Control Strip cp [1.0], part of ???)
gestaltControlStripVersion
Returns the version of Control Strip software that is installed as
NumVersion.
gestaltControlStripVersion = 'sdvr';
WARNING:
The same selector code is used by PowerTalk. See the same entry with
the Apple System Software section.
NOTE:
Control Strip displays a bar with icons and popup menus to quickly
change settings on portable macs, i.e. AppleTalk and the sound volume.
snhw (System? [???])
(Sound Manager ext [3.0])
gestaltSoundHardware
Returns type of hardware used for sound?
gestaltSoundHardware = 'snhw'; {Sound Hardware}
gestaltASC = 'asc '; {ASC}
gestaltDSP = 'dsp '; {DSP}
gestaltClassicSound = 'clas'; {Classic Mac?}
gestaltAWAC? = 'awac'; {returned on PowerMac}
gestaltSing? = 'sing'; {returned on PB 540c}
strm (Remote Access Aliases [1.0], part of Apple Remote Access)
gestaltRemoteAccessAttr *AD02
gestaltRemoteAccessAttr = 'strm'; {Remote Access attributes}
gestaltRemoteAccessExists = 0; {RA Connection Interface is}
{available}
gestalt??? = 1; {installed since ARA 2.0?}
gestalt??? = 3; {installed since ARA 2.0?}
teat (Macintosh Drag and Drop ext [1.0])
gestaltTEAttr *AD05
Returns information about the functions and capabilities of TextEdit.
gestaltTEAttr = 'teat'; {TextEdit attributes}
gestaltTEHasGetHiliteRgn = 0; {TEGetHiliteRgn present}
thds (Thread Manager ext [1.1]) *AD04
(QuickDraw GX ext [1.0?])
gestaltThreadAttr
Returns information about the Thread Manager.
gestaltThreadAttr = 'thds'; {Thread Manager attributes}
gestaltThreadsPresent = 0; {bit true if Threads present}
gestaltSpecificMatchSupport = 1; {bit true if ‘exact match’}
{API supported}
gestaltThreadsLibraryPresent = 2; {bit true if ThreadsLib is}
{present}
gestalt??? = 4; {unknown, System 7.5}
tmTE (Inline Extension ext [1.0], part of KanjiTalk7)
gestaltTSMTEAttr *AS07
Returns information about the Text Services Manager for TextEdit.
gestaltTSMTEAttr = 'tmTE'; {TSM for TE attributes}
gestaltTSMTEPresent = 0; {TSM for TE is present}
tmTV (Inline Extension ext [1.0], part of KanjiTalk7)
gestaltTSMTEVersion *AS07
Returns the version of the Text Services Manager for TextEdit as BCD.
gestaltTSMTEVersion = 'tmTV'; {TSM for TE version}
gestaltTSMTE1 = $0100; {TSM for TE version 1.0}
ttsc (Text-To-Speech Manager ext [1.0?])
gestaltSpeechAttr
Returns information about the Speech Manager.
gestaltSpeechAttr = 'ttsc'; {Text-To-Speech Manager attributes}
gestaltSpeechMgrPresent = 0; {bit true if Speech Mgr present}
ufox (Foreign File Access ext [4.0], part of Apple CD-ROM Software) *AT03
gestaltForeignFAVersion?
Returns Foreign File Access version in BCD.
gestaltForeignFAVersion? = 'ufox'; {Foreign File Access version}
NOTE: The returned version is obtained from 'vers' resource ID# 1.
xlat (Macintosh Easy Open ext [1.0]) *AD03
gestaltTranslationAttr
Returns information about the Translation Manager.
gestaltTranslationAttr = 'xlat'; {Translation Manager attributes}
gestaltTranslationMgrExists = 0; {TM present}
gestalt??? = 1; {by MEA 1.0.3 to indicate fix?}
XTND (??? [???])
gestaltXTNDAttr *AS11
Returns information about XTND Manager?
gestaltXTNDAttr = 'XTND';
gestaltPPCXTNDPresent = 1;
NOTE:
Is used in some code to check if XTND engine is present. However it is
unknown when it is installed, so supposedly it is meant for future
use. Like a built-in XTND engine in the System Software? When the
selector is installed all operations are dispatched through trap
_XTNDMgr ($ABF4) otherwise the library provides the code.
(Marco Piovanelli)
Third Parties Software
----------------------
!SYM (Symbionts ext [1.0] by B. Kevin Hardman)
gestaltSymbiontsTable
Returns a pointer to a structure containing the size of the System
Heap before and after loading the INITs.
gestaltSymbionts = '!SYM'; {Symbionts address}
ADfd (AfterDark [2.0?] by Berkeley Systems, Inc.)
gestaltAfterDarkFolder *M05
Returns a pointer to a procedure that gives the DirID and vRefNum of
the 'After Dark Files' folder.
gestaltAfterDarkFolder = 'ADfd';
NOTE:
See for more information the AfterDark Gestalt header file (See
chapter 'Related Software' for availability)
ADrk (AfterDark [2.0] by Berkeley Systems, Inc.)
gestaltAfterDarkAttr *M05
Returns a longword bitmask containing public information about
After Dark.
gestaltAfterDarkAttr = 'ADrk'; {After Dark states}
eSystemIQActive = 0; {SystemIQx activity monitor active}
eSoundActive = 1; {AD has allocated a sound channel}
eADAcquiringPassword = 2; {After Dark has its password dialog up}
NOTE:
See for more information the AfterDark Gestalt header file (See
chapter 'Related Software' for availability)
ApoL (Apollo ext [1.0] by Jeremy Roussak)
gestaltApolloTable
Returns a handle to an instance of a structure.
gestaltApolloTable = 'ApoL'; {Apollo address}
NOTE:
See for more information the Programmers' Information chapter in the
Apollo 1.0 documentation. (Jeremy Roussak)
ASHI (Arashi app [???] by Juri Munkki)
???
Returns information about the presence of Arashi by returning one (1)
if loaded, and zero (0) when removed.
AuBu (AutoBuild ext [1.0] by Rene G.A. Ros)
gestaltAutoBuildVersion
Returns the version of AutoBuild as NumVersion.
gestaltAutoBuildVersion = 'AuBu'; {AutoBuild version}
NOTE: The returned version is obtained from 'vers' resource ID# 1.
BBlk (Basic Black cp [1.3], by Mason L. Bliss)
gestaltBasicBlackAddr
Returns the address of Basic Black's patch globals.
gestaltBasicBlackAddr = 'BBlk'; {Basic Black address}
NOTE:
See documentation included with Basic Black for more information.
BIFF (QM Biff ext [1.0] by Patrick C. Beard)
???
Determines if there is mail (QuickMail). The response long word is 1
if you have mail, and 0 if you don't.
CKI3 (AETracker cp [3.0] by C.K. Haun)
gestaltAETrackerAddr
This selector returns a pointer to the external interface routine for
AETracker, details of which are in the AETracker interface guide.
(C.K. Haun)
gestaltAETrackerAddr = 'CKI3'; {AETracker address}
dBgP (DBugR cp [1.0?] by Alessandro Levi Montalcini)
???
Returns a pointer to a data structure with the preferences,
identical to the data in the PREF resource, for which a template
is included.
NOTE: The d is actually the option-d character (ASCII $B6).
EagL (Eagle ext [1.4], part of Apollo 1.1 by Jeremy Roussak)
gestaltEagleAttr?
Returns information about the state of the Eagle background
application.
gestaltEagleAttr? = 'EagL'; {Eagle attributes}
gestaltEaglePPCReady? = 0; {Eagle can accept next PPC}
FrcP (Decor cp [1.0] by Francois Pottier)
gestaltDecorAddr
Returns a pointer to a structure which can be read or changed, and
enables programmers to change the picture on the desktop.
gestaltDecorAddr = 'FrcP'; {Decor address}
NOTES:
See for more information on how to use this structure the
documentation included with Decor 1.0 or later.
The c is actually the option-c character (ASCII $8D).
Gast (Gestalt! appl [2.9.2] by Roland Mansson)
gestaltGestaltVersion
Returns the version of the application as NumVersion.
GestaltValue is removed when application quits. Just for fun.
(Roland Mansson)
gestaltGestaltVersion = 'Gast'; {Gestalt! version}
NOTE: The a is actually the option-u/a character (ASCII $8A).
GTLK (GestaltTalk code by Brigham Stevens, Apple Computer DTS)
???
Snippet code, see documentation. (See chapter 'Related Software'
for availability).
GWat (GestaltWatch ext [1.0] by Scot Bronson)
???
Returns pointer to structure where collected information is stored.
NOTE: In development, not yet available.
IF 8 (Speak Note cp [???] by Glenn R. Howes)
??? (CREATOR)
Returns information about the installed copy of Speak Note.
???Attr = 'IF 8';
gestaltSpeechNoteAvailable = 0;
Lnch (Network Time cp [2.0] by Pete Resnick)
(First Launch Gestalt INIT code resource, by Pete Resnick)
gestaltFirstLaunchAttr
Returns info on whether the _Launch trap has been called by the
System.
gestaltFirstLaunchAttr = 'Lnch'; {_Launch information)
gestaltFirstLaunchDone = 0; {_Launch called, INIT time over}
NOTE:
Bit 0 of the response, gestaltFirstLaunchDone, indicates whether the
_Launch trap has been called since startup of the machine. All other
bits are reserved and currently 0. Even if not installed at INIT time,
Network Time will install the Gestalt selector if it is not already
there when the control panel is opened and automatically set
bit 0 to 1.
68000 assembler source code is available for the INIT that installs
the selector, and INIT resource -4048 from Network Time may be
stolen (and renumbered as desired) and used in any INIT file as
desired. (Pete Resnick)
NIPX (Novell MacIPX cp [1.0.1] by Novell Inc.)
gestaltNovellIPXVersion
Returns the version of MacIPX as NumVersion.
gestaltNovellIPXVersion = 'NIPX'; {MacIPX version}
NOTE:
If the selector returns an error (i.e. no such selector?) then MacIPX
is not installed. If the selector returns 0L then MacIPX is installed
but the driver is not open. Any other value is the version.
(Duane Murphy)
NMBT (Attention cp [0.6] by Marco Piovanelli)
gestaltAttentionAddr
The response value returned is a pointer to a read-only parameter
block in the system heap.
gestaltAttentionAddr = 'NMBT'; {Attention address}
NOTE: See for more detailed information the included ReadMe file.
NTim (Network Time cp [2.0] by Pete Resnick)
???
Returns information private to Network Time.
PWRS (PwrSwitcher cp [1.0] by David B. Lamkins)
gestaltPwrSwitcherTable
Returns a pointer to a private data structure (undocumented).
gestaltPwrSwitcherTable = 'PWRS'; {Power Switcher address}
SAVC (AfterDark cp [2.0] by Berkeley Systems, Inc.)
(Basic Black cp [1.3.3] by Mason L. Bliss)
(DarkSide of the Macintosh [4.0] by Tom Dowdy)
gestaltScreenSaverControl *M05
Returns a pointer to a procedure of type
typedef pascal OSErr (*SaverControlProcPtr) (SaverCommand command);
which allows controlling the screen saver.
gestaltScreenSaverControl = 'SAVC';
NOTE:
See for more information the AfterDark Gestalt header file (See
chapter 'Related Software' for availability)
SAVR (AfterDark cp [2.0] by Berkeley Systems, Inc.)
(Arashi app [???] by Juri Munkki)
(Basic Black cp [1.3.3] by Mason L. Bliss)
(DarkSide of the Macintosh [4.0] by Tom Dowdy)
gestaltScreenSaverAttr *M05
Returns information about the current screen saver. Defined if a
screen saver is installed.
gestaltScreenSaverAttr = 'SAVR'; {Screen saver attributes}
gestaltSaverTurnedOn = 0; {saver enabled/disabled}
gestaltSaverAsleep = 1; {saver currently asleep}
gestaltSaverDemoMode = 2; {saver sleeping in demo mode}
gestaltSaverPasswordMode = 3; {saver sleeping in password-}
{protected mode}
gestaltAppDrawingDisabled = 4; {QD drawing disallowed between}
{module animation frames}
NOTE:
See for more information the AfterDark Gestalt header file (See
chapter 'Related Software' for availability)
SDdD (Shutdown Delay cp [2.0.1] by Alessandro Levi Montalcini)
kSDDelayCreator
Returns a pointer to a data structure described in the documentation
included with Shutdown Delay.
kSDDelayCreator = 'SDdD';
NOTE: The d is actually the option-shift v character (ASCII $D7).
SHCM (Shared Code Manager ext [1.0] by Eric Schlegel of Microsoft Corp.)
gestalt???
Returns a pointer to an undocumented entrypoint into the Shared Code
Manager.
gestalt??? = 'SHCM';
NOTE:
The Shared Code Manager (1991) is a simple DLL mechanism that is
currently used by Microsoft's Mac OLE 1.0 (Object Linking & Embedding)
and the applications that use OLE 1.0. (Eric Schlegel)
SLip (StuffIt SpaceSaver ext [1.0?] by Aladdin Systems, Inc.)
gestaltStuffItSpaceSaverAddr
Returns the address of the SpaceSaver "command module" which allows
developers to access all the functions of SpaceSaver.
(Leonard Rosenthol)
gestaltStuffItSpaceSaverAddr = 'SLip';
TExT (FileTyper Menu cp [none], part of FileTyper by Daniel Azuma)
gestaltTyperMenuAttr
Returns information about the FileTyper Menu's operation.
gestaltTyperMenuAttr = 'TExT';
gestalt??? = 0; {TRUE = NO item added to Finder's}
{File menu}
WARNING:
No currently released version of FileTyper Menu (up to and including
4.1.1) installs this selector, but future versions may. Check for the
existence of this selector first, if you use it. (Daniel Azuma)
TMON (TMON Pro [3.0] by ICOM Simulations, Inc.)
???
The value returned is a pointer to a Monitor information block. *M04
(Scott Bronson)
Typ4 (FileTyper Menu cp [4.1.1], part of FileTyper by Daniel Azuma)
gestaltTyperMenuPriv
Returns private information, the existence of this selector indicates
FileTyper Menu is installed.
gestaltTyperMenuPriv = 'Typ4';
NOTE:
Third parties can determine if FileTyper Menu is installed by
checking for the existence of this selector. However, the actual value
returned is private and subject to change. (Daniel Azuma)
UMAM (Authentication Manager cp [1.0.7] by Robert John Churchill of the
University of Michigan)
gestaltAuthManVersion
Returns the version of the Authentication Manager as Double BCD.
gestaltAuthManVersion = 'UMAM';
YeHa (SpeedyFinder7 cp [1.5.4?-1.5.9] by Victor Tan)
???
Returns a pointer to a private data structure (undocumented).
NOTE:
The structure to which the Gestalt selector refers changes almost
invariably from version to version of SF7. Should someone work out
parts of the structure of the selector keep in mind that it will
almost certainly change in the next minor release and definitely with
the next major release. (Victor Tan)
Unknown Gestalt Selector Codes
==============================
The following sections list selector codes of which the meaning is unknown.
Apple System Software
---------------------
aint (System? [7.1.1?])
NOTE: Returns 2 on a C660AV and Q840AV.
apml (PowerTalk Manager ext [1.0?], part of System 7.1 Pro and 7.5)
Bit 0 and 31 set.
bast (Performa cp [1.1], part of System 7.1P)
batt (Powerbook Duo Enabler [1.0])
(System Enabler 111 [1.0])
(System Enabler 121 [1.0])
(System Enabler 131 [1.0])
(System Enabler 201 [1.0]))
Returns information about the PowerBook battery?
gestaltBatteryAttr? = 'batt';
gestalt??? = 0;
gestaltAdapterConnected? = 1;
gestalt??? = 2;
brcn (Screen? cp [1.0?] on Color Classic)
brcN (Energy Save cp [1.0?], part of Monitor Energy Saver)
bugx (System Update ext [3.0])
NOTE:
The System Update reserves the 'bugx;, ‘bugy’ and ‘bugz’ gestalt
selectors to indicate which fixes are installed on a given machine.
These are for Apple internal use only, and developers should not rely
on these. There is no guarantee that they will be supported in future
versions of Macintosh system software. *AT06
bugy (32-bit System Enabler [1.0])
(Hardware System Update ext [1.0])
(Network Launch Fix ext [1.0])
(Sound Manager ext [3.0])
(System enabler 065)
gestaltEnablerAttr?
gestaltEnablerAttr? = 'bugy'; ?
gestaltEnablerEgretDispatchPatch? = 0; {these correct the system}?
gestaltEnablerEgretTimePatch? = 1; { clock and modem perf.}?
gestalt??? = 2; {unknown, Hardware Upd.}
gestaltEnablerEgretTickHandlerPatch? = 3; { see bit 0 & 1}?
gestalt??? = 4; {unknown, Hardware Upd.}
gestaltEnablerSCSIPatch? = 5; {floppy drive fixed}?
gestalt??? = 6; {unknown, Hardware Upd.}
gestaltEnabler32bit? = 7; {32-bit enabler present}?
gestalt??? = 9; {unknown, Sound Mgr 3.0}
gestalt??? = 11; {unknown, Hardware Upd.}
gestalt??? = 12; {unknown, Hardware Upd.}
gestalt??? = 13; {unknown, Hardware Upd.}
gestalt??? = 14; {unknown, Hardware Upd.}
gestalt??? = 15; {unknown, Hardware Upd.}
gestalt??? = 16; {unknown, Hardware Upd.}
gestaltEnablerKeyboardPatch? = 17; {corrects Adjustable Kbd
gestaltKeyboardType response?}
gestalt??? = 18; {unknown, Hardware Upd.}
gestalt??? = 19; {unknown, ???}
gestalt??? = 24; {unknown, ???}
gestalt??? = 25; {unknown, ???}
gestalt??? = 26; {unknown, ???}
gestaltNetworkLaunchFix? = 27; {fix problem with appl. on}
{server launch with 68040}
gestalt??? = 28; {unknown, ???}
gestalt??? = 31; {unknown, ???}
WARNING:
These are ALL guesses. Well not entirely, I used the ResEdit CODE
Editor to peek into the 32-bit System Enabler, Hardware System update
and other software. Please check if I'am right. You should be able to
find some of the answers in the INIT resource of the Hardware Update
and the names of the PTCH resources in version 1.0 were also useful...
The System Enablers (for new Macintosh models) don't seem to install
or change any Gestalt selector to indicate their presence.
NOTE:
The System Update reserves the 'bugx;, ‘bugy’ and ‘bugz’ gestalt
selectors to indicate which fixes are installed on a given machine.
These are for Apple internal use only, and developers should not rely
on these. There is no guarantee that they will be supported in future
versions of Macintosh system software. *AT06
bugz (System (Tuna Helper INIT rsrc) [7.0]/Tune-up ext)
NOTE:
The System Update reserves the 'bugx;, ‘bugy’ and ‘bugz’ gestalt
selectors to indicate which fixes are installed on a given machine.
These are for Apple internal use only, and developers should not rely
on these. There is no guarantee that they will be supported in future
versions of Macintosh system software. *AT06
cate (Catalogs Extension? ext [???], part of System 7.1 Pro and 7.5 ?)
Bit 0 set.
cfmg (System [7.1.2 on PowerMac])
clbv (PowerTalk ext [1.0?], part of System 7.1 Pro and 7.5)
Bit 0 set.
ctxm (???)
detc (???)
dude (Powerbook Duo Enabler [1.0])
(System Enabler 111 [1.0])
(System Enabler 121 [1.0])
(System Enabler 131 [1.0])
(System Enabler 201 [1.0]))
dudi (Powerbook Duo Enabler [1.0])
(System Enabler 111 [1.0])
(System Enabler 121 [1.0])
(System Enabler 131 [1.0])
(System Enabler 201 [1.0]))
fdrs (Finder [7.1.1b1?], part of AOCE Developer's Kit)
Installed by Finder extension?
fnda (Finder [7.1.1b1?], part of AOCE Developer's Kit)
NOTE: The a is actually the option-a character (ASCII $8C).
fnd& (Finder?, System? [7.1.2 on PowerMac?])
NOTE: The & is actually the option-shift-a character (ASCII $E5).
fnd* (Finder [7.1.1b1?], part of AOCE Developer's Kit)
Installed by Finder extension?
NOTE: The * is actually the shift-6 character (ASCII $F6).
fnd? (Finder [7.1.1b1?], part of AOCE Developer's Kit)
Installed by Finder extension?
fnd (Finder [7.1.1b1?], part of AOCE Developer's Kit)
Installed by Finder extension?
fndc (Finder?, System? [7.1.2 on PowerMac?])
fndn (Finder?, System? [7.1.2 on PowerMac?])
NOTE: The n is actually an option-n, n (ASCII $96).
FNDR (Finder [7.1.1b1?], part of AOCE Developer's Kit)
Installed by Finder extension?
gntz (System [7.1.2 on PowerMac])
gpad (System? [7.5?])
gprf (System? [7.5?])
harp (PowerBook cp? [7.2?])
hcsl (Finder [7.1.1b1?], part of AOCE Developer's Kit)
heap (System [7.1.2 on PowerMac])
Bits 1 and 5 set.
iadj (System? [7.1.2?] with PowerTalk?)
(Display Enabler ext, Icon relocation INIT ID#3 [1.0])
idsp (???)
mbox (Mailbox Extension? ext [???], part of System 7.1 Pro and 7.5 ?)
mjik (MenuMagic ext [1.0], part of System 7.1 Pro and 7.5)
mtv! (TV Setup cp [1.0], part of System for Macintosh TV?)
NOTE:
Not seen installed, disassembled control panel, meaning unknown.
It's probably an address. (Rene Ros)
ldap (???)
PhoN (PowerBook Setup cp [7.3.1?], PhoneINIT INIT resource)
port (Powerbook Duo Enabler [1.0])
(System Enabler 111 [1.0])
(System Enabler 121 [1.0])
(System Enabler 131 [1.0])
(System Enabler 201 [1.0])
gestaltPortAttr?
Returns information about the ports?
gestaltPortAttr? = 'port';
gestaltHasInternalModem? = 0?;
gestaltHasExternalPrinter? = 1?;
gestaltHasExternalModem? = 2?;
NOTE:
System Enabler 201 and PowerBook Duo enabler contain a GDEF resource
which indicates bits 0, 1 and 2 can be set. (Rene Ros)
ppad (Performa cp [1.1], part of System 7.1P)
pprf (Performa cp [1.1], part of System 7.1P)
pxtn (System? [7.5?])
reno (Apple Help? ext? [???], part of System 7.1 Pro and 7.5 ?)
scsi (System [7.1?])
(SCSI Manager ext [4.3])
gestaltSCSIAttr? (not listed)
Returns information about the SCSI Manager?
gestaltSCSIAttr? = 'scsi';
gestalt??? = 0;
gestalt??? = 1;
gestalt??? = 2;
NOTE:
On PowerMac and Centris 660AV returns 3 (System 7.1) or 7
(System 7.1.2)
And the SCSI Manager 4.3 package returns 4 with other models.
serh (System? [7.1.2?])
gestaltSerialHardware?
Returns type of hardware used for serial I/O?
gestaltSerialHardware? = 'serh'; {Serial Hardware}
gestaltClassicSer? = 'Clas'; {returned on PPC 8100/80 (GeoPort?)}
shal (System [7.1?])
NOTE: Returns 2 on PowerMac and 1 on Centris 660AV
tpad (System? [7.5?] on PowerBook 520/540?)
udsk (System [7.1.2 on PowerMac])
udsv (System [7.1.2 on PowerMac])
vdrc (System? [7.5?] on PowerBook 520/540?)
vmbs (System [7.0])
(RAM Doubler [1.0] by Connectix Corporation)
gestaltVMBackingStoreRef? (not listed)
Returns the file reference number of the Virtual Memory storage file
if VM is present.
gestaltVMBackingStoreRef? = 'vmbs';
vmcl (System, VM on [7.0])
vmem (RAM Doubler [1.0] by Connectix Corporation)
gestaltVMExtensionMgr? (addition)
Returns type of software used to extend the Virtual Memory Mgr?
gestaltVMExtensionMgr? = 'vmem';
gestaltRAMDoubler? = 'RaM2';
NOTE: See 'Reports' chapter (RAMDoubler section) for more information.
OSType(7) (System [6.0.4])
Returns LongInt('carl') and a result code of noErr.
OSType(13) (System [6.0.4])
Returns LongInt('bbmc') and a result code of noErr.
Apple Additional Software
-------------------------
3615 (Express Modem cp [1.0], part of Express Modem Software)
a pc (??? [???], part of System on Quadra 610-DOS?)
admn (AppleShare Admin appl [3.0])
gestaltASAdminAttr?
gestaltASAdminAttr? = 'admn';
gestaltASAdminPresent? = 0;
afps (AppleShare File Server? app? [4.0?])
Bits 0 and 16 set.
AgVU (Agent VU ext [2.0?], part of Virtual User)
aslm (Shared Library Manager ext [1.1.1?])
(System? [???])
gestaltSharedLibraryMgrVersion?
Returns the version of the Shared Library Manager as NumVersion?
gestaltSharedLibraryMgrVersion? = 'aslm';
NOTE: ASLM 1.1.1 final returns $01110003...
asps (AppleShare Print Server appl [3.0])
gestaltASPrintServerAttr?
gestaltASPrintServerAttr? = 'asps';
gestaltASPrintServerPresent? = 0;
AtEa (At Ease Startup [2.0?], part of At Ease for Workgroups)
bART (MacCheck app [1.0])
BaRT (MacCheck app [1.0])
comp (QuickDraw Font Plus ext [???], part of the KanjiTalk 7.1)
NOTES:
The name "QuickDraw Font Plus" is translated from Japanese and may be
translated differently by Apple Computer, Inc.
I think 'comp' stands for 'composite', as the INIT contains patches to
the Font Manager needed to handle 'composite font suitcases'.
(Marco Piovanelli)
doub (WorldScript II ext [???], part of KanjiTalk7)
gestaltDoubleByteScriptVersion?
Returns the version of WorldScript II as BCD?
gestaltDoubleByteScriptVersion? = 'doub';
NOTE:
This selector seems to be installed by WorldScript II (the
System 7.1 ext needed to handle double-byte scripts like Japanese,
Korean and Traditional Chinese). Known returned value is $0x0710.
(Marco Piovanelli)
fdbk (Speech Setup cp? [???], part of PlainTalk)
futr (ThreadsINIT ext [2.0?], part of Threads Package)
gFax (Fax Extension ext [1.1?], part of Express Modem Software)
hgfd (AppleShare File Server appl [3.0])
gestaltASFileServerAttr?
gestaltASFileServerAttr? = 'hgfd';
gestaltASFileServerPresent? = 0;
HrIt (HearIt cp [1.0])
immg (??? [???] on PowerBook 520/540?)
intD (??? [???])
NOTE:
This is a mystery selector. It isn't installed by any software, as
far as I know, but the Finder 7.1 checks for this selector in certain
situations. (Marco Piovanelli)
iscd (ISO 9660 File Access ext [5.0], part of Apple CD-ROM Software)
gestaltISO9660FAVersion? (not listed)
Returns ISO 9660 File Access version in BCD?.
gestaltISO9660FAVersion? = 'iscd';
lstk (Speech Setup cp? [???], part of PlainTalk)
ltma (Link Tool Manager ext [2.0?], part of Apple Remote Access 2.0)
gestaltLinkToolVersion?
Returns the version of the Link Tool Manager as NumVersion?
gestaltLinkToolVersion? = 'ltma';
NOTE:
The only value I've seen returned was $02002008, which would mean
'2.0d8' which was not correct since the 'vers' recource said '2.0f0'.
The value is hardcoded in the .LTM Driver resource. (Rene Ros)
mash (System [7.1P?]/At Ease [1.0?])
NOTE:
The Starter cp (part of System 7.1P) contains a 'mash' resource and
includes a template for it. Can this be the same data-structure?
(Rene Ros)
mfdr (At Ease [1.0])
octb (??? [???] on PowerBook 520/540?)
ptlk (Speech Setup cp? [???], part of PlainTalk)
Remt (AutoRemounter cp [???])
slnk (MNPLinkTool? [1.0], part of Apple Remote Access)
sndx (Sound Manager ext [3.0]?)
gestaltSoundMgrAttr?
gestaltSoundMgrAttr? = 'sndx'?;
gestaltSoundMgrPresent? = 0?
thng (ThreadsINIT ext [2.0?], part of Threads Package)
thrd (ThreadsINIT ext [2.0?], part of Threads Package)
Third Parties Software
----------------------
AClk (AutoClock Extension ext [1.3?] by Jean-Pierre Gachen)
ADex (AfterDark [2.0?] by Berkeley Systems, Inc.)
ADii (AfterDark [2.0?] by Berkeley Systems, Inc.)
NOTE:
Not installed by AfterDark but the GDEF indicates it is able to return
a response.
ADr2 (AfterDark [2.0?] by Berkeley Systems, Inc.)
NOTE:
Not installed by AfterDark but the GDEF indicates it is able to return
a response.
ADRC (DDExpand appl [3.7.7?] by Fifth Generation Systems)
AP00..AP06
(RapidLock cp or RapidTrak cp [1.1], part of RapidTrak software by
by Insignia Solutions Inc.)
It seems these selectors are installed for each harddisk connected to
your Macintosh. The last two bytes of the selector are the SCSI ID.
Although the third byte can mean something else, because perhaps
'AP17' (listed below) is probably also installed by
RapidLock/RapidTrack.
AP17 (???)
ApWi (ApplWindows cp [2.0?] by Hiro Yamamoto)
ASTN (Asante EN/SC ext [???] by Asante Technologies, Inc.)
aYmm (AfterDark [2.0?] by Berkeley Systems, Inc.)
AzNe (NameView cp [2.7?] by AStar Technologies, Inc.)
A–Tr (Trapper ext [1.0?] by Alessandro Levi Montalcini)
bMRN (Super Boomerang cp [4.0?] part of NOW Utilities 4.0.1p package
by NOW Software)
CDJR (ExtendedAppleMenu [???] by Chris Derossi)
CHSR (ChooserUser [1.2?] by Maurice Volaski)
CiCN (Color ICON Mania cp [1.0] by Yosuke Suzuki)
DanS (PowerClick cp [1.0] by Daniel A. Segel)
DCDt (NoDesktopCleanup cp [1.0?] by Alessandro Levi Montalcini)
DCKc (Keys! cp [1.0] by Stefan Kurth)
NOTE: The lowercase c is actually the control-q (Command key sign)
character (ASCII $11).
DD37 (DiskDoubler [3.7] by Fifth Generation Systems, Inc.)
DDAD (AutoDoubler cp [1.0?] by Fifth Generation Systems, Inc.)
DFlh (DiskFlash cp [1.0] part of ALSoft Power Utilities by ALSoft, Inc.)
Dpth (DepthMaster cp [1.0] by Victor Tan)
DWG! (Volume Menu cp [1.0], by David Gladstone, Chris Burns, Julian Harris)
EM20 (Extensions Manager cp [2.0] by Ricardo Batista)
ESCa (Escapade cp [1.0?] by Christopher R. Wysocki)
ESOC (Serial of Champions ext [???] by Mike Throckmorton)
Extn (NOW Startup Manager cp [4.0?] part of NOW Utilities 4.0.1p package
by NOW Software)
Fie (Icon7 ext [???] by Inline Designs)
gestaltIcon7?
fPth (FinderPaths cp? [???])
NOTE: The f is actually the option-f character (ASCII $C4).
fmci (FinderMenu INIT ext [1.0], part of UserLand's Frontier Runtime
package)
FtCg (FontPatchin cp [2.0?] by Keisuke Hara)
fWmM (Super Boomerang cp [4.0?] part of NOW Utilities 4.0.1p package
by NOW Software)
GrEG (Greg's Buttons ext [3.1.4?] by Greg Landweber)
GtOp (MenuExtend cp [1.0], part of ALSoft Power Utilities by ALSoft, Inc.)
gV00 (PowerPort cp? [???])
gV01 (PowerPort cp? [???])
gV02 (PowerPort cp? [???])
gV03 (PowerPort cp? [???])
gV04 (PowerPort cp? [???])
HAM (???)
He20 (Helium cp [1.0?] by Robert L. Mathews)
HEID (Incognito cp [1.0?] by Manuel Veloso)
HPBG (HP Background ext [3.0?] by Hewlett-Packard Company)
GDEF always returns value 1.
HtLk (Reference Link ext [1.0] by James W. Walker)
iHnd (Invisible Hand cp [1.0] by Carl Mauer)
NOTE:
Because this cp patches the _Random trap you can use this selector to
determine its presence and refuse to continue.
Intj (Interjection ext [???])
JAiN (Rival cp by Inline Designs)
gestaltRival
NOTE: The i is actually the option-u/i character (ASCII $95).
jsm1 (???)
JXNM (NowMenus cp [4.0?] part of NOW Utilities 4.0.1p package
by NOW Software)
KBCF (Easy KEYS cp [1.5] by Kerry Clendinning)
KBCM (???)
LFnt (Dialog View cp [???], formerly List Font cp by James W. Walker)
LxRZ (Retro.SCSI? ext [2.0?] part of Retrospect by Dantz Development
Corporation)
(Remote? cp [2.0?] part of Retrospect by Dantz Development
Corporation)
MClk (SuperClock! [4.0] by Steve Christensen)
MJC& (AutoMenus II cp [???] by Michael Conrad)
MV10 (TearOFF cp [???] by Bad Boys' Software)
nOAg (??? cp [1.2?], part of netOctopus by Pole Position)
nOAv (??? cp [1.2?], part of netOctopus by Pole Position)
Returns version as NumVersion?
NGst (NokNok cp [1.0?])
NkNk (NokNok cp [1.0?])
NowT (NOW Toolbox ext [4.0?] part of NOW Utilities 4.0.1p package
by NOW Software)
PBUf (???)
PBUt (???)
PRT+ (PrintAid [0.9?] by James W. Walker)
PtrP (PrintPatrol [1.0] by Randy DeRuiter and John Champion)
QRef (QuickRef ext? [1.0] by Scott Bronson)
RQDC (DropCheck cp [???] by Ronald B. Queloz)
SCTR (FaxMonitor ext [1.6?], part of FAXcilitate by PSI)
SEcl (ScreenEclipse cp [1.0], part of ALSoft Power Utilities by
ALSoft, Inc.)
SFun (SF Windows [1.0] by Damon Cokenias)
SFwd (Open-wide cp [3.0?] by James W. Walker)
SLi2 (StuffIt SpaceSaver ext by Aladdin Systems, Inc. ?)
ST20 (Snap-To cp [2.0?] by Trevden Sherzell)
SDIT (???)
STYH (StayHere! cp [2.0?] by Nobuhiro Miyatake)
TgrX (Xmas Lights cp [1.0] by Tiger Technologies)
Tmon (TMON Pro cp? [3.0] by ICOM Simulations)
UlOn (UndelineEnabler ext [2.0?], part of FontPachin package by
Keisuke Hara)
See also FtCg selector.
View (StuffIt Viewer Engine [???] by Aladdin Systems Inc.)
gestaltViewerEngine
vmFn (RAM Doubler [1.0] by Connectix Corporation)
Seems to return a memory address, perhaps to a function to control
Virtual Memory?
NOTE: See 'Reports' chapter (RAMDoubler section) for more information.
WARE (???)
WREO (Replace Existing Options cp [???] by Jonathon Summers)
NOTE: The W is actually the option-w character (ASCII $B7).
Wttf (TeachText7.0 Font ext [???] by Jonathon Summers)
NOTE: The W is actually the option-w character (ASCII $B7).
*Men (OtherMenu ext [1.0] by James W. Walker)
Gestalt Manager Calls
=====================
All standard calls to the _Gestalt or _GestaltValueDispatch trap are listed
in this chapter.
Gestalt Manager Routines
------------------------
The CallSelectorFunctionProc and NewSelectorFunctionProc functions were
listed in the GestaltEqu.h file on E.T.O. #12 CD-ROM but not yet fully
documented. Sorry, for mixing Pascal and C source, I will convert
everything to C when I know enough about it and have the time.
FUNCTION Gestalt (selector: OSType; VAR response: LongInt): OSErr;
Available since System 6.0.4.
Trap Macro
_Gestalt ($A1AD)
Registers on entry D0: selector code
Registers on exit A0: response
D0: result code
Result codes
noErr 0 No error
gestaltUnknownErr -5550 Could not obtain the response
gestaltUndefSelectorErr -5551 Undefined selector
FUNCTION NewGestalt (selector: OSType; selectorfunction: ProcPtr): OSErr
Available since System 6.0.4.
Trap Macro
_NewGestalt ($A3AD)
Registers on entry A0: address of new selector function
D0: selector code
Registers on exit D0: result code
Result codes
noErr 0 No error
memFullErr -108 Ran out of memory
gestaltDupSelectorErr -5552 Selector already exists
gestaltLocationErr -5553 Function not in system heap
FUNCTION ReplaceGestalt (selector: OSType; selectorfunction: ProcPtr;
VAR oldGestaltFunction: ProcPtr): OSErr;
Available since System 6.0.4.
Trap Macro
_ReplaceGestalt ($A5AD)
Registers on entry A0: address of new selector function
D0: selector code
Registers on exit A0: address of old selector function
D0: result code
Result codes
noErr 0 No error
gestaltUndefSelectorErr -5551 Undefined selector
gestaltLocationErr -5553 Function not in system heap
#define CallSelectorFunctionProc(userRoutine, selector, response) \
(*userRoutine)(selector, response)
Trap Macro
??? (???)
Registers on entry ???
Registers on exit ???
Result codes
noErr 0 No error
??? ??? ???
#define NewSelectorFunctionProc(userRoutine) \
(SelectorFunctionUPP)(userRoutine)
Trap Macro
??? (???)
Registers on entry ???
Registers on exit ???
Result codes
noErr 0 No error
??? ??? ???
Undocumented Gestalt Manager Routines
-------------------------------------
FUNCTION? GestaltDispatch? (???):OSErr;?
Trap Macro
_GestaltDispatch ($A0AD)
Registers on entry ???
Registers on exit ???
Result codes
noErr 0 No error
???
NOTE:
Found in the MPW, THINK C and THINK Pascal Traps Interface file
on 'Bookmark CD 14'.
Available since System 6.0.4 but code will always return error -50
(paramErr). (Lawrence D'Oliveiro, Rene Ros)
FUNCTION? GetGestaltProcPtr? (selector?: OSType;
var selectorfunction: ProcPtr): OSErr;?
Trap Macro
_GetGestaltProcPtr ($A7AD)
Registers on entry D0: selector code?
Registers on exit ??: address of selector function
Result codes
noErr 0 No error
???
NOTE:
Found in the MPW Traps Interface file on 'Bookmark CD 14'.
Available since System 6.0.4 but code will always return error -50
(paramErr). (Lawrence D'Oliveiro, Rene Ros)
I (Rene Ros) have written Pascal code to do what this system call
probably is planned to do in the future.
Gestalt Value Routines
----------------------
Please note the GestaltValue routines are currently invoked through a
library, and only in the future will GestaltValue be moved into the OS
proper. The GestaltValue functions are stack based and don't use registers.
The GestaltValue library first checks to see if trap $ABF1 is implemented
(not with any system software available). If trap $ABF1 is implemented, all
calls to the library are routed to this trap, otherwise the library uses
embedded code.
WARNING:
The GestaltValue library distributed originally checks for the wrong trap
(_ThreadDispatch, $ABF2). Make sure your software doesn't crash when this
trap is installed by the Thread Manager extension. See the Related Software
chapter for availability (also on mail archive server).
(Most info about the GestaltValue functions was provided by
Marco Piovanelli and Dave Radcliffe).
FUNCTION NewGestaltValue (selector: OSType; newValue: LongInt): OSErr;
Available as glue code.
Trap Macro Selector
_GestaltValueDispatch ($ABF1) $0401
Result codes
noErr 0 No error
unimpErr -4 Unimplemented core routine
memFullErr -108 Ran out of memory
(and other memory errors)
gestaltDupSelectorErr -5552 Selector already exists
FUNCTION ReplaceGestaltValue (selector: OSType;
replacementValue: LongInt): OSErr;
Available as glue code.
Trap Macro Selector
_GestaltValueDispatch ($ABF1) $0402
Result codes
noErr 0 No error
unimpErr -4 Unimplemented core routine
memFullErr -108 Ran out of memory
(and other memory errors)
gestaltUndefSelectorErr -5551 Undefined selector
FUNCTION DeleteGestaltValue (selector: OSType): OSErr;
Available as glue code.
Trap Macro Selector
_GestaltValueDispatch ($ABF1) $0203
Result codes
noErr 0 No error
unimpErr -4 Unimplemented core routine
gestaltUndefSelectorErr -5551 Undefined selector
History
=======
This chapter contains a short overview about the history of the Gestalt
Manager and its predecessors.
Environs
--------
PROCEDURE Environs (VAR rom,machine: INTEGER);
With the introduction of the Macintosh the system routine 'Environs' was
introduced. It allowed to obtain two pieces of information: the ROM version
and a value to indicate the machinetype. This "ROM oriented" way soon
appeared to be insufficient when the range of Macintosh hardware and
software became more diverse.
SysEnvirons
-----------
FUNCTION SysEnvirons (versionRequested: INTEGER;
VAR theWorld: SysEnvRec): OSErr;
With System 4.1 a new system routine was introduced which allowed the
programmer to obtain more information about the current configuration.
Upon completion SysEnvirons filled the SysEnvRec with the information.
This was however an "all-or-nothing" situation, it was not possible to
obtain just one piece of information.
To allow for larger system environment records with more information one
needed to specify the version number of the system environment record. The
last version, introduced with System 6, was version 2 which had nine fields.
Gestalt
-------
FUNCTION Gestalt (code: LONGINT; VAR feature: LONGINT): OSErr;
You may wonder how one can be so stupid to list the Gestalt routine wrong...
However, this is how the Gestalt routine was presented to developers in
the Preliminairy Developer Note regarding System 7 in 1989.
There was no selector of type OSType as we known it today. Instead a list
of numerical constants was used, like:
zVersion = $1; { Gestalt Version }
zMachType = $100; { machine type }
zSystemVers = $101; { system file version }
and nine others.
But the principle used with todays Gestalt routine was there: request one
specific piece of information and you'll get it. Nothing more and nothing
less. Back then it wasn't the Gestalt Manager since there was only one
routine. Both the NewGestalt and the ReplaceGestalt did not exist.
In June 1992 (released in February 1993?) three new functions were added
to the Gestalt Manager: NewGestaltValue, ReplaceGestaltValue and
DeleteGestaltValue
Reports
=======
When someone reports some findings involving several selectors and/or a
report is too long to include with the selector entry above, that report
is listed here. They should be as short as possible with the maximum
amount of information.
AppleShare File & Print Server selector codes
---------------------------------------------
The selectors are defined when the application has run. If it is still
running (or wasn't properly quit) the response is one. When the application
has properly quit the response is zero.
admn AppleShare Admin
asps AppleShare Print Server
hgfd AppleShare File Server
(these three are undocumented)
AppleTalk
---------
With the release of the System 7 Tuner product, AppleTalk will not be
loaded at startup, if prior to the previous shutdown AppleTalk was turned
off in the Chooser. Under this circumstance, the 'atkv' selector is not
available. If the 'atkv' selector is not available under System 7, this is
an indicator that AppleTalk cannot be turned on without doing so in the
Chooser and rebooting the system. *AT02
Copy protection using Gestalt
-----------------------------
In Develop 17 Brigham Stevens suggests to use Gestalt and FindFolder as a
way to implement copy protection in the most compatible way possible.
By determining several characteristics at installation from the Gestalt Mgr
and the DirID of the System Folder with FindFolder you can check for this
info later. When is has changed you can then ask for the serial number
or a password again. (Rene Ros)
Environs & SysEnvirons
----------------------
Using Macsbug it is very easy to determine that the SysEnvirons function
uses the Gestalt Manager to fill the fields of the system environment
record. So, when you install your own gestalt definitions by using the
ReplaceGestalt function this will also change the information returned
by SysEnvirons.
The older Environs function doesn't use the Gestalt Mgr and the glue code
seems to only look at two values in ROM. (Rene Ros)
Executor Mac-emulator
---------------------
Executor is a Macintosh Emulator for DOS machines, published by
Abacus Research and Development, Inc. (1993/1994). The Gestalt Manager is
also emulated and the version I have seen (on a 486DX) says it's a MacPlus
with a 68LC040 processor with MMU. The 'sysv' selector returns 0x607 but
it also lists a lot of selectors usually not installed by 6.0.7. Like
the 'edtn' and 'stdf' selectors. It then simply returns zero.
Strangely enough the 'tabl' selector is not installed, but this doesn't
confuse the Gestalt! application! (Rene Ros)
GestaltValue
------------
The first time you call NewGestaltValue, the library installs two non-
relocatable blocks in the system heap and the 'gval' gestalt selector. One
of the blocks is filled with code: it's actually a gestalt definition that
implements GestaltValue's shared mechanism. The second block contains the
selectors and values GestaltValue manages. The response returned by the
'gval' selector is a pointer to the second non-relocatable block in the
system heap. (Marco Piovanelli)
Dave Radcliffe wrote on 23 March 1993 regarding some information, about the
GestalValue glue code, listed with version 1.4 of this list:
---------------------------------------------------------------------------
The information on the _GestaltValue trap ($ABF2) is correct based on the
glue, but because of a mistake on my part, the glue should be checking for
$ABF1. A new version of the glue is being distributed on the developer CD
next month. If developers need the fixed version sooner, or don't have
access to the CD, they can write to me at:
radcliff@apple.com
and I'll send them the fixed version.
---------------------------------------------------------------------------
Glue code
---------
These development/compiler software contain glue-code to handle a few
selectors even when the Gestalt Manager is not available.
THINK C (5.0 and later)
THINK Pascal (4.0 and later)
MPW (3.2 and later)
The following selectors can be handled by the glue-code, with all others
an error (gestaltUndefSelectorErr) will be returned.
gestaltAppleTalkVersion = 'atlk';
gestaltFPUType = 'fpu ';
gestaltKeyboardType = 'kbd ';
gestaltLogicalRAMSize = 'lram';
gestaltMachineType = 'mach';
gestaltMMUType = 'mmu ';
gestaltPhysicalRAMSize = 'ram ';
gestaltProcessorType = 'proc';
gestaltQuickdrawVersion = 'qd ';
gestaltSystemVersion = 'sysv';
gestaltVersion = 'vers';
Unless you are using direct calls, ofcourse.
(Source: THINK Reference 2.0)
QuickTime
---------
If you install QuickTime under System 6, a major portion of the Alias
Manager and FSSpec support is also added. But, QT doesn't implement the
Gestalt selectors because the implementation is not complete. You must
check for either Alias Mgr or QuickTime. (Michael Hecht)
If QuickTime is present, assume you have an Alias Manager, subject to some
limitations (NewAliasMinimalFromFullPath not present). Nearly all the
FSSpec calls are available (except FSpExchangeFiles) in System 6 when
QuickTime is installed. See for more information Technical Note
M.QT.MovieTB.Q&As (QT 510).
RAM Doubler 1.0
---------------
It looks like RAM Doubler tricks the system in thinking there is virtual
memory but actually stores it somewhere else in memory instead to disk
which we are used to before RAM Doubler came around. It also looks like
this is done in corporation with Apple since a selector installed by
RAM Doubler is 'vmem' which is all lower-case and thus reserved by Apple.
In addition the response from this selector is always LongInt('RaM2') which
is the creator type of RAM Doubler. It seems this selector is used to
indicate which software is used to extend the capabilities of the Virtual
Memory Manager.
RAM Doubler also installs the selector 'vmFn' which seems to be a pointer
to a function to control RAMDoubler or to obtain information. It looks like
registers are used to pass parameters to and from that function. D0 perhaps
holds values 1 to 6 as input and perhaps A0 is used for the return value.
FUNCTION VMExtensionControl? (selector: Integer; VAR result: LongInt): OSErr;
Registers on entry D0: selector code
Registers on exit A0: result code
D0: error code
Result codes
noErr 0 No error
invalidSelector? 206 Invalid selector value?
???
Values used as selector:
CONST
kVMControlType? = 1; {type VM extension: RaM2}
kVMControlVersion? = 2; {version VM extension as BCD}
kVMControl??? = 3; {engine version as BCD?: $0313}
kVMControlMemSize? = 4; {unknown: Get/SetMemorySize?}
kVMControlMemSize? = 5; {unknown: Get/SetMemorySize?}
kVMControl??? = 6; {unknown}
kVMContolMaxFunctions? = MAXINT; {returns number of valid selectors}
{or any other value outside the}
{current 1-6 range}
Remember: all this is heresay!!!
Because of all this you can imagine RAM Doubler replaces/installs the
following System Software selectors (and I think it does):
lram, pgsz, ram , vm , vmbs. (Anonymous, Rene Ros)
Kilo-liners
===========
This chapter will list very small pieces of code which are related to
any Gestalt Routine.
Modula-2 source:
TYPE
SelectorFunction =
PROCEDURE
(
(*selector :*) OSType,
VAR (*response :*) LONGCARD
) : OSErr;
C-source:
typedef pascal OSErr (*SelectorFunction)(OSType, long);
Direct Gestalt Calls
--------------------
You can use the following code to call directly the Gestalt, NewGestalt and
ReplaceGestalt traps. In that way the (large) glue code will not be
installed by your compiler. (Contributions by Lawrence D'Oliveiro and
Marco Piovanelli).
Modula-2 source:
PROCEDURE Gestalt
( selector : OSType;
VAR response : LONGINT
) : OSErr;
(* direct call to Gestalt trap. *)
CODE
0225FH, (* move.l (sp)+, a1 *)
0201FH, (* move.l (sp)+, d0 *)
0A1ADH, (* _Gestalt *)
02288H, (* move.l a0, (a1) *)
03E80H; (* move.w d0, (sp) *)
Pascal-source:
FUNCTION Gestalt (selector: OSType;
VAR response: LONGINT): OSErr;
{direct call to Gestalt trap.}
inline $225F, $201F, $A1AD, $2288, $3E80;
Modula-2 source:
PROCEDURE NewGestalt
( selector: OSType;
gestaltFunction: SelectorFunction
): OSErr;
(* direct call to NewGestalt trap. *)
CODE 0205FH, (* move.l (sp)+, a0 *)
0201FH, (* move.l (sp)+, d0 *)
0A3ADH, (* _NewGestalt *)
03E80H; (* move.w d0, (sp) *)
Pascal-source:
FUNCTION NewGestalt (selector: OSType;
gestaltFunction: ProcPtr): OSErr;
{direct call to NewGestalt trap}
inline $205F, $201F, $A3AD, $3E80;
Modula-2 source:
PROCEDURE ReplaceGestalt
( selector : OSType;
gestaltFunction : SelectorFunction;
VAR oldGestaltFunction : SelectorFunction
) : OSErr;
(* direct call to Gestalt trap. *)
CODE
0225FH, (* move.l (sp)+, a1 *)
0205FH, (* move.l (sp)+, a0 *)
0201FH, (* move.l (sp)+, d0 *)
0A5ADH, (* _ReplaceGestalt *)
02288H, (* move.l a0, (a1) *)
03E80H; (* move.w d0, (sp) *)
Pascal-source:
FUNCTION ReplaceGestalt (selector: OSType;
gestaltFunction: ProcPtr;
VAR oldGestaltFunction: ProcPtr
): OSErr;
{direct call to ReplaceGestalt trap.}
inline $225F, $205F, $201F, $A5AD, $2288, $3E80;
Direct GestaltValue Calls
-------------------------
You can use the following code to call directly the NewGestaltValue,
ReplaceGestaltValue and DeleteGestaltValue when the _GestaltValueDispatch
trap is available.
Pascal-source: *AS04
FUNCTION NewGestaltValue(selector: OSType, newValue: LongInt): OSErr;
inline $303C, $0401, $ABF1;
FUNCTION ReplaceGestaltValue(selector: OSType,
replacementValue: LongInt): OSErr;
inline $303C, $0402, $ABF1;
FUNCTION DeleteGestaltValue(selector: OSType): OSErr;
inline $303C, $0203, $ABF1;
GestaltSelectorZero
-------------------
With all the selectors that are supposed to return non-zero values if
installed, it may be helpful to have a utility routine that returns a zero
value (instead of an error) if a selector isn't installed. It's short and
sweet because it makes a direct call to the _Gestalt trap; of course this
means you can't use it on systems earlier than 6.0.4.
(Contributed by Lawrence D'Oliveiro)
Modula-2 source:
PROCEDURE GestaltSelectorZero (Selector: OSType): LONGCARD;
(* returns the value of the specified Gestalt selector,
or zero if unknown. *)
CODE 0201FH, (* move.l (sp)+, d0 *)
0A1ADH, (* _Gestalt *)
06702H, (* beq.s @2 *)
091C8H, (* sub.l a0, a0 *)
02E88H; (* @2: move.l a0, (sp) *)
Pascal-source:
FUNCTION GestaltSelectorZero (Selector: OSType): LongInt;
{returns the value of the specified Gestalt selector,}
{or zero if unknown.}
inline $201F, $A1AD, $6702, $91C8, $2E88;
Call Gestalt Definiton Direct
-----------------------------
Suppose you have just loaded a GDEF resource, or replaced one and keep the
original around and store a pointer to it somewhere private. Suppose next,
you want to call it to obtain a response without using yet another selector.
Thats what the following inline code is useful for. Just pass it the
usual selector and result parameters but also a pointer to the GDEF
(Lock it if it's still a relocatable block).
Pascal-source:
FUNCTION CallGestaltDEF (selector: OSType;
var result: LongInt;
aRoutine: ProcPtr): OSErr;
inline $205F, $4E90;
{MOVE.L (SP)+, A0}
{JSR (A0)}
Abbreviations
=============
A/UX - Apple UNIX
ADB - Apple Desktop Bus
AMU - Apple Memory Unit?
ARTA - Apple Real Time Architecture
AS - AppleShare
ASC - Apple Sound Chip
ASCII - American Standard Code for Information Interchange
ASIC - Application specfic integrated circuit
AWAC - ??? (???)
Caboose - processor that manages the keyswitch, system power,
the real-time clock, and parameter RAM
CDEF - Control DEFinition (code resource)
CISC - Complex Instruction Set Computer (compare with RISC)
CLUT/DAC - color look-up table and digital-to-analog converter IC
Combo - chip, combines the functions of the SCC and the SCSI controller
CPU - Central Processing Unit
DAFB - Direct Access Frame Buffer
DAV - Digital Audio Video (connector)
DDC - Display Driver Chip
DFAC - Digitally Filtered Audio Chip
DITL - Dialog ITems List (resource)
DLL - Dynamically Linkable Library
DMA - Direct Memory Access
DN - Developer Note
DOS - Disk Operating System (to run a computer???)
DSP - Digital Signal Processor
FAT - File Allocation Table (?)
FPU - Floating Point Unit
GDEF - Gestalt DEFinition (code resource)
GPi - General Purpose Input
IM - Inside Macintosh
IOP - Input/Output Processor
IWM - Integrated Woz Machine
JDB - Junction Data Bus
MacOS - Macintosh Operating System
MCU - Memory Control Unit
MAE - Macintosh Application Environment (Mac system on UNIX RISC)
MEA - Macintosh Easy Open
MMU - Memory Management Unit
NBP - Name Binding Protocol
OCE - Open Colloboration Environment
OSA - Open Scripting Architecture
OSL - Object Support Library
OSS - ???
PB - PowerBook
PDS - Processor-Direct Slot
PGC - Parity Generator Chip
PMMU - Paged Memory Management Unit
PSRAM - Pseudo Static RAM
PPC - Process-to-Process Communication, also:
PowerPC
ProDOS - Professional Disk Operating System? (OS for the Apple //)
PWM - Pulse-Width Modulated?
QD - QuickDraw
RAM - Random Access Memory (see DRAM & SRAM, compare ROM)
RAMDAC - Random Access Memory, Digital/Analog Converter
RBV - RAM-Based Video
RISC - Reduced Instruction Set Computer (compare with CISC)
ROM - Read Only Memory
RTC chip - Real-Time Clock chip
SCC - Serial Communications Controller
SCSI - Small Computer System Interface
SDP - Standard Directory Package
SIMM - Single In-line Memory Module
SMP - Standard Mailer Package
Sonic - chip for built-in Ethernet
Sporty - a custom IC that provides sound output amplification functions
SRAM - Static RAM
SWIM - Super-Wozniak Integrated Machine OR
Sanders-Wozniak Integrated Machine
TE - TextEdit (32Kb limited built-in text-engine)
TN - Technical Note
TTS - Text-To-Speech
VIA - Versatile Interface Adapter
VRAM - Video RAM
VM - Virtual Memory
VDAC - Video Digital to Analog Converter
YANCC - Yet Another NuBus Controller Chip
FA - File Access
RA - Remote Access
Sources
=======
A Apple Computer, Inc.
AD Documentation & Magazines
AD01 MacTCP Programmer's Guide
AD02 AppleTalk Remote Access API External Reference Specification
AD03 Macintosh Easy Open programmer's docs
AD04 Thread Manager 1.1 and 2.0 documentation
AD05 Drag Manager Programmer's Guide
AD06 Sound Manager Tech Note on BookMark CD 16
AD07 Develop 17, p. 123
AD08 MAE Compatibility Hints
AS Software, source code & header files
AS01 QuickTime ImageCompression source files
AS02 CommToolbox 1.1 source files
AS03 MPW Interface files on Bookmark CD 14
AS04 GestaltEqu header file on ETO 12
AS05 GestaltEqu header file on ETO 13
AS06 GestaltEqu header file on BookMark CD 17
AS07 TSMTE header file on BookMark CD 17
AS08 AppleScript header file on ETO 14
AS09 CMApplication header file on ETO 14
AS10 Drag header file on ETO 14
AS11 XTNDInterface header file on ETO 14
AT Technical Notes:
AT01 TN M.OV.GestaltSysenvirons (OV 16), May 1987
AT02 TN M.NW.AppleTalk2 (NW 13), Feb.1992
AT03 TN M.DV.CD-ROMDriver (DV 22), May 1993
AT04 TN M.HW.SCSI.Q&As (HW 540), Oct. 1990
AT05 TN M.TX.TextServicesMgr.Q&As (TE 531), May 1993
AT06 TN OS 05 - System Update 3.0, July 1993/Rev. May 1994
S Symantec Corp.
S01 THINK Pascal 4.0 interface files
S02 THINK C GestaltGlue source files
S03 THINK Reference 1.0 and 2.0
M Miscellaneous sources
M01 Gestalt DA 0.4 1990 (Carl C.Hewitt)
M02 Gestalt dcmd 1.0 (Eric Simenel, Apple Computer France)
M03 sysvINIT source files (Apple Computer Japan, Inc.)
M04 TMON Professional Reference Manual, p.192 (ICOM Simulations)
M05 AfterDarkGestalt.h file (Berkeley Systems, Inc.)
Related Software
================
Listed below is software which may be of interest to developers because
they are a tool providing information from the Gestalt Manager, include
Gestalt-related source code or provide additional capabilities to the
Gestalt Manager. Included is also were you can find or get a copy.
All software available on sumex-aim.stanford.edu is also available on the
INFO-MAC CD-ROM by Pacific HiTech, Inc. The INTERNET FTP-sites mentioned
may have one or more mirror sites as well. Locations on CompuServe are not
included.
Some software listed below can also be found at the mail-archive server,
see the chapter 'Availability' for more information.
5thColumn, GestaltProbe (Kamran Golriz, Apple Computer Inc.)
Extension with MPW Tools to query other mac on a network, one of
the tools is GestaltProbe.
CD-ROM: Bookmark CD (Apple Developer Group)
:Tools & Applications:Network & Communications:5th Column:
AEgestalt (Kent Sandvik, Apple Computer Inc.)
Uses Apple Events to get Gestalt response from remote machine,
includes C-source. (Requires color?? Doesn't run on MacPlus)
FTP: ftp.apple.com [130.43.2.3]
/dts/mac/sc/snippets/platforms.tools/aegestalt-1-0.hqx
CD-ROM: Bookmark CD (Apple Developer Group)
:Documentation & Samples:Sample Code:Snippets:
Platforms & Tools:AEGestalt 1.0:
AfterDark Gestalt header file (Berkeley Systems, Inc.)
Header file for using the gestalt selectors used by many screensavers.
email: gestalt-selectors-list-request@bio.vu.nl
archive get src/AfterDarkGestalt.h
brklysystm@aol.com (Berkeley Systems Mac Tech Support)
ask them nicely to email the AfterDarkGestalt.h file.
DisplayGestalt (Craig Marciniak)
Small application displays configuration using Gestalt Mgr, includes
C-source.
FTP: mac.archive.umich.edu [141.211.120.11]
/development/libraries/displaygestalt.cpt.hqx
email: gestalt-selectors-list-request@bio.vu.nl
archive get software/displaygestalt.cpt.hqx
Feature Teller 1.0 (Jennifer Minge, Apple Computer Inc.)
Sample application quering Gestalt Mgr (or SysEnvirons if not
available). Includes THINK Pascal source.
CD-ROM: Bookmark CD (Apple Developer Group)
:Tools & Applications:OS/Toolbox:Feature Teller 1.0:
Gestalt! 3.0 (Roland Mansson)
Displays responses from installed selectors.
FTP: ftp.lu.se [130.235.132.90]
/pub/mac/util/gestalt300.cpt.hqx
sumex-aim.stanford.edu [36.44.0.6]
/info-mac/cfg/gestalt-300.hqx
email: gestalt-selectors-list-request@bio.vu.nl
archive get software/gestalt-30-app.cpt.hqx
GestaltDA 0.4 (Carl C. Hewitt, Apple Computer Inc.)
Displays responses from installed selectors.
CD-ROM: Bookmark CD (Apple Developer Group)
:Tools & Applications:OS/Toolbox:GestaltDA 0.4
Gestalt DCMD (Apple Computer Inc.)
This dcmd (debugger command for MacsBug) allows you to "use" Gestalt
when you're in MacsBug.
FTP: ftp.apple.com [130.43.2.3]
/dts/mac/sc/snippets/platforms.tools/gestalt-dcmd.hqx
CD-ROM: Bookmark CD (Apple Developer Group)
:Documentation & Samples:Sample Code:Snippets:
Platforms & Tools:Gestalt dcmd:
GestaltExt (Andre Cavegn)
External for 4TH Dimension Relational Database application from
ACI/ACI US.
FTP: sumex-aim.stanford.edu [36.44.0.6]
/info-mac/cfg/tech-tool-104.hqx
email: gestalt-selectors-list-request@bio.vu.nl
archive get software/gestalt-ext.hqx
GestaltGlue (???)
Glue code and interface in C and assembly.
CD-ROM: Bookmark CD (Apple Developer Group)
:Documentation & Samples:Sample Code:System 7.0 samples:
DTS.Utilities:Gestalt*
Gestalt Pro 1.1.2 (Rene G.A. Ros)
External for 4TH Dimension Relational Database application from
ACI/ACI US.
FTP: sumex-aim.stanford.edu [36.44.0.6]
/info-mac/dev/a4d/ext/gestalt-pro-112.hqx
email: gestalt-selectors-list-request@bio.vu.nl
archive get software/gestalt-pro-112-.sit.hqx
GestaltTalk (Brigham Stevens, Apple Computer DTS)
Code part of Notification Hacks to show how you can communicate
between an application and an INIT using the Gestalt Mgr. Includes
C-source files.
CD-ROM: Bookmark CD (Apple Developer Group)
:Documentation & Samples:Sample Code:Snippets:
Toolbox:Notification Hacks:GestaltTalk:
GestaltValue (anonymous, Apple Computer Inc.)
Library and interface for use of the GestaltValue functions.
CD-ROM: Bookmark CD (Apple Developer Group)
:Tools & Applications:OS/Toolbox:GestaltValue:
FTP: sumex-aim.stanford.edu [36.44.0.6]
/info-mac/dev/gestalt-value-lib.hqx
email: Dave Radcliffe, Mac DTS (radcliff@apple.com)
gestalt-selectors-list-request@bio.vu.nl
archive get software/gestaltvalue-lib.hqx
GestaltWatch ext 1.0a1 (Scott Bronson)
Tracks all calls to NewGestalt and ReplaceGestalt traps.
Not yet available.
Gestalt XFCN 3.2.1 (Jeff Iverson)
Hypercard XFCN to query the Gestalt Manager.
FTP: sumex-aim.stanford.edu [36.44.0.6]
/info-mac/card/gestalt-321.hqx
email: gestalt-selectors-list-request@bio.vu.nl
archive get software/gestalt-321-xfcn.hqx
Gestaltzeigen appl 1.0 (B. Kevin Hardman)
Displays responses from installed selectors and any bit
interpretation. Not yet available.
Go Gestalt appl 1.0b (Paul Reznick)
Displays information obtained thru the Gestalt Mgr.
email: gestalt-selectors-list-request@bio.vu.nl
archive get software/go-gestalt-10b.sit.hqx
TechTool appl 1.0.4 (Micromat Computer Systems)
Application to reset PRAM, rebuild DTDB and show Gestalt info.
email: gestalt-selectors-list-request@bio.vu.nl
archive get software/tech-tool-104.hqx
Technical Notes: (Apple Computer Inc.)
M.OV.GestaltSysenvirons (Gestalt & SysEnvirons)
M.NW.AppleTalk2 (AppleTalk The Rest Of the Story)
M.OS.GestaltMgr.Q&As (Gestalt Manager Questions and Answers)
FTP: ftp.apple.com [130.43.2.3]
/dts/mac/tn/
overview.ov/ov-16-gestalt-and-sysenvir.hqx
networking.nw/appletalk2.hqx
operating.system.os/os-505-gestalt-mgr-qas.hqx
CD-ROM: Bookmark CD (Apple Developer Group)
:Documentation & Samples:Mac Tech Notes:
Overview (OV):OV 16 - Gestalt & SysEnvirons
Networking (NW):NW 13 - AppleTalk The Rest Of
Operating System (OS):OS 505 - Gestalt Mgr Q&As
Test Gestalt (Apple Computer Inc.)
Examples to test for QuickDraw version and Virtual Memory status,
includes C-source.
FTP: ftp.apple.com [130.43.2.3]
/dts/mac/sc/snippets/toolbox/testgestalt.hqx
CD-ROM: Bookmark CD (Apple Developer Group)
:Technical Documentation:Sample Code:Snippets:
Toolbox:TestGestalt:
Userfunction Gestalt code (by Rich Kubota, Apple Computer Inc.)
Source code in C for Apple Installer Script writers.
FTP: ftp.apple.com [130.43.2.3]
/dts/mac/sc/snippets/platforms.tools/
userfunction-gestalt.hqx
About this list
===============
The Gestalt Manager is a collection of system routines which allow
applications to test for the availability of software and hardware. Because
of the increasing number of different software and hardware configurations,
this is getting an important issue. It probably already is and known by the
term 'compatability'.
The Gestalt function allows applications to obtain information about the
current configuration. Selectors are used to refer to certain information.
A selector is of type OSType (a four byte value) and usually contain four
ASCII characters. For example: the selector 'sysv' returns the version of
the current system. Other functions, NewGestalt and ReplaceGestalt, allow
programmers to install their own Gestalt selectors.
Programmers need to know these selectors beforehand to be able to request
and interpret the value returned by the Gestalt function.
See for more detailed information on how to use the Gestalt Manager
routines Inside Macintosh part VI (old series). The upcoming Inside
Macintosh: Operating Utilities will replace IM VI.
When you already have one or more of the new IM issues you may be a bit
disappointed. I was, because of the very minimal information provided
regarding the availability of the system routines. Of most routines you
will find no information on how to test their availability.
This Gestalt Selectors List intends to list all know selectors, but in
practice it lists all selectors known to the editor.
I would like to see this list to be a combined effort by different persons
who have together access to a wide area of information.
This list may contain (educated) guesses and perhaps even false
information, so no guarantee is made about the contents.
You may use this information freely (see Legal Stuff chapter), but when
you find information not included with this list; please tell me. If you
have additions, corrections, comments, suggestions, news about available
software, etc., mail it me. Please, also mention the source you used,
if any.
You can send contributions, remarks, etc. to this email address:
gestalt-selectors-list@bio.vu.nl
If you want to remain anonymous, please mention this and it will be taken
care of.
I don't have all the documentation or knowledge and I don't want to, and
I'am certainly not Mr.Gestalt.
Availability
------------
If you downloaded this list from CompuServe, a BBS, or any other service,
you will notice some strange things like 'FTP-sites' which have to do
with the fact that this list originates from INTERNET.
This list is originally distributed in the following ways:
**INTERNET**
USENET newsgroup comp.sys.mac.programmer (c.s.m.p.)
This list has become too large to post to c.s.m.p., so starting from
version 2.2 this list is no longer posted there. Instead an announcement
will be posted informing were you can find the latest version.
FTP-site
sumex-aim.stanford.edu [36.44.0.6]
Every minor and major version is submitted to the info-mac archives at
sumex-aim.stanford.edu. (/info-mac/dev/info/gestalt-selectors-XX.hqx)
It is also available on its mirror sites.
Contact: Info-Mac Moderator (info-mac-request@sumex-aim.stanford.edu)
FINGER
Using Finger to obtain the latest version is no longer possible.
**COMPUSERVE**
Starting with version 2.0 this list will be uploaded to the
Macintosh Developers Forum (MACDEV). Only new minor and major versions
will be uploaded once. It will then appear in the Tools/Debuggers (13)
section.
**GENERAL**
CD-ROM or BBS
Because of permissions I granted you may get this list from a CD-ROM or via
a BBS from Internet, CompuServe or a CD-ROM. If you do, and the release was
more than two months ago, there probably already is a newer version.
MAILING LIST
Every person on the mailing list gets automatically an update by email
whenever there are some changes. If you want to subscribe or unsubscribe to
this mailing list you need to send an email to this address:
gestalt-selectors-list-request@bio.vu.nl
Then put in the subject line either 'subscribe' or 'unsubscribe'.
The mailing list is moderated, which means everybody can email to:
gestalt-selectors-list@bio.vu.nl
But only after approval of the moderator the other subscribers will receive
your posting. This guarantees that no confidential contribution is
distributed before the moderator sees it.
This service is only possible to those who have an account on Internet or
any other network reachable from Internet (CompuServe, AOL, AppleLink,
Fidonet). I can not provide mailing of printed versions or on disk by
normal surface mail.
MAIL ARCHIVE SERVER
Your can retrieve the latest versions of this list and other software
by sending an email to this address:
gestalt-selectors-list-request@bio.vu.nl
In the subject line you need to enter 'archive' and then put one command
behind it or more in the body of your email. These commands can be:
help to get some help on using the archive server
ls <dir> to list the contents of the specified directory
get <dir>/<file> to have the specified file sent to you by email.
To obtain the abstracts of all files available you can use this command:
get ABSTRACTS
PRINTED
If you want this list printed on paper you may want to try a feature
included with the new LaserWriter 8 software. With it you can print four
pages on a single sheet of paper. When you set the page breaks correct,
this produces a very neat, little booklet.
Acknowledgements
----------------
I want to thank the following persons for their contribution to this list:
_NAME INTERNET EMAIL ADDRESS_
Anonymous contributor(s) <anonymous@secret.cia>
Lonnie R. Abelbeck <abelbeck@dev.abelbeck.com>
Daniel Azuma <dazuma@cco.caltech.edu>
J.D. Sterling Babcock <jdsb@ee.duke.edu>
Ivan M Cavero Belaunde <ivanski@world.std.com>
Mason L. Bliss <mason@cis.umassd.edu>
Scott Bronson <urge@mcl.mcl.ucsb.edu>
Jim Browne <jbrowne@ncsa.uiuc.edu>
Mark Dawson <marc@apple.com>
Lawrence D'Oliveiro <ldo@waikato.ac.nz>
M. David Greenspon <gremicf@yalevm.ycc.yale.edu>
C.K. Haun <haun@apple.com>
Michael Hecht <Michael_Hecht@mac.sas.com>
Robert Hess <robert_hess@macweek.ziff.com>
Mark B. Johnson <mjohnson@apple.com>
David B. Lamkins <dblamkins@aol.com>
Roland Mansson <roland.mansson@ldc.lu.se>
Matsubayashi Kohji <matubays@ics.es.osaka-u.ac.jp>
Duane Murphy, Novell Inc. <damurphy@wc.novell.com>
Mark Nagata <nagata@kurims.kyoto-u.ac.jp>
Fabrizio Oddone <simula3@di.unito.it>
Marco Piovanelli <piovanel@ghost.dsi.unimi.it>
Kees Pols <kpols@bio.vu.nl>
Francois Pottier <pottier@clipper.ens.fr>
Jon Pugh <jonpugh@netcom.com>
Quinn <quinn@cs.uwa.edu.au>
Dave Radcliffe, Apple Computer Inc. <radcliff@apple.com>
Pete Resnick <resnick@cogsci.uiuc.edu>
Leonard Rosenthol <leonardr@netcom.com>
Jeremy Roussak <jeremyr@dcs.qmw.ac.uk>
Ray Sanders <72511.232@CompuServe.COM>
Eric Schlegel, Microsoft <ericsc@microsoft.com>
Zalman Stern <zalman@adobe.com>
Victor Tan <victort@extro.ucc.su.oz.au>
Rodrigo Torres, Berkeley Systems Mac Tech Support <brklysystm@aol.com>
John Watte <d88-jwa@nada.kth.se>
Chris Wysocki <wysocki@netcom.com>
And my colleagues at the Computer Department at the Biology Faculty of the
Free University in Amsterdam, The Netherlands for their help and support.
Also special thanks to Marco Piovanelli for his support and comments about
preliminary versions and updates.
The persons mentioned above provided information used in this list. They
did this on personal title, NOT on behalf of their employer, unless
explicitly stated otherwise.
I assume information you mail to me about Gestalt selectors may be used in
this list. Information made available to the general public (e.g. a posting
to a USENET newsgroup) is also included and the persons name added to this
chapter (and to the mailing list).
I will mail you back to thank you and include the parts from the list which
were changed, according to the information you provided, to let you check
them.
Definitions and Format
======================
This chapter explains where the word 'Gestalt' comes from, a few things
are defined and it explains how each selector code entry looks like.
Use in Language
---------------
Webster's Dictionary (?):
ge.stalt \g<e>-'s(h)t<a:>lt, -'s(h)t<o.>lt\ n, pl ge.stalt.en
\-<\e>n\ or gestalts (1922)
[G, lit., shape, form]
:a structure, configuration, or pattern of physical, biological,
or psychological phenomena so integrated as to constitute a
functional unit with properties not derivable by summation of its
parts.
German-Dutch dictionary:
Gestalt w [-en]
stature, figure, form; Ritter von der Traurigen -, knight of the
sorrowful figure.
Definitions
-----------
Apple System Software
These are selectors installed by System Software from Apple Computer,
Inc.
Inside Macintosh says this about them:
"Apple reserves for its own use all four-character sequences
consisting solely of lowercase letters and non alphabetic ASCII
characters".
Apple Additional Software
These are selectors installed by additional software from Apple
Computer, Inc. The same as with the system software selectors applies.
Third Parties Software
These are selectors installed by software from parties other than
Apple Computer, Inc.
Inside Macintosh says about these:
"If you have registered a creator string with Apple, you are strongly
encouraged to use that sequence as your selector code".
This type of selectors is included in this list with the motto "If you
don't know they are there, you can't do anything with them".
Especially the Third Party selectors may change with every new release
and are therefore only listed in the 'known selectors' part when the
author has described the structure in the documentation or by email to
me. These selectors don't have a high priority but when possible I
want to know at least which software installs it to exclude it as
possible "Apple selectors".
Some people at Apple also differentiate between commercial developers
and others, as being "third" and "fourth" parties respectively. But
with this list this is not the case.
Format Selector Entry
---------------------
Format used to display information about each selector:
selector code (Software name & type [since version], by company/author)
constant name
description
CONST declaration; {remark} *ref.number to source
NOTE and/or WARNING:
Where the type is one of:
app application (APPL)
cp control panel (cdev)
ext extension (INIT/appe/RDEV etc.)
Example:
COLA (Sugarwater ext [1.0] by John Sculley)
gestaltSugarwaterVersion
Returns version of Sugarwater as NumVersion.
gestaltSugarwaterVersion = 'COLA'; *AT01
WARNING: This example is fictitious.
NOTE:
Sugarwater? See the book 'West of Eden, The End of Innocence at
Apple' by Frank Rose.
Most selectors are listed as four characters, if there are only two or
three characters displayed the remainder are spaces (or it's a typo!).
Diacritical characters are shown in the most logical normal character and
at the end of the entry a note is included about which key-combination to
press with a normal International system and US keyboard layout to get the
required diacritical character and also its ASCII code.
When 'INF' is at the end of the first line it means it is an informational
selector, all others are environmental selectors.
The source reference number may also be used in other places than indicated
above. It then applies to other parts of the entry or to the whole entry.
A single question mark indicates an uncertainty regarding that information.
Three question marks indicate complete abcense of the information.
Some constant-names may not originate from official publications.
Format Version Numbers
----------------------
BCD (Binary Coded Decimal)
$0x0402 means 4.0.2.
INTEGER
The decimal representation of the returned value is the version.
Double BCD (my own fantasy name..., RR)
$00010108 means 1.1.8.
NumVersion
The format of the LongInt response can be coerced into type NumVersion,
which is the same format as used for the 'vers' resource type.
type
NumVersion = packed record
case INTEGER of
0: (majorRev: SignedByte; {1st part of version number in BCD}
minorRev: 0..9; {2nd part is 1 nibble in BCD}
bugFixRev: 0..9; {3rd part is 1 nibble in BCD}
stage: SignedByte; {stage code: dev, alpha, beta, final}
nonRelRev: SignedByte);{revision level of non-released version}
1: (version: LONGINT); {to use all 4 fields at one time}
end;
stage is one of: $20 = development
$40 = alpha
$60 = beta
$80 = final
Legal Stuff
===========
(c) 1992-1994, Rene G.A. Ros
See other sections (below) for remarks regarding liability, trademarks and
distribution.
Notice of Liability
-------------------
The information in this list is distributed on an "AS IS" basis, without
warranty. While every precaution has been taken in the preparation of this
list, neither the editor nor any contributor shall have any liability to
any person or entity with respect to any liability, loss, or damage caused
or alleged to be caused directly or indirectly by the information contained
in this list or by the computer software and hardware products described
herein.
Trademarks
----------
Throughout this list trademarked names are used. Rather than put a
trademark symbol in every occurrence of a trademarked name, I state I am
using the names only in an editorial fashion and to the benefit of the
trademark owner with no intention of infringement of the trademark.
Distribution
------------
The information in this list may be used freely. When you use the
information in this list for COMMERCIAL purposes, you may consider sending
the editor a donation. You are not allowed to distribute this list outside
any computer network (especially printed, on disk or CD-ROM) unless you
have contacted the editor and received permission to do so. This is also to
ensure you have the latest version. The updates may not be distributed,
these are ONLY for the persons on the distribution list.
Permission for distribution is granted to:
Aladdin Systems (InstallerMaker software)
Arizona Macintosh Users Group (BBS in a BOX CD-ROM)
IDG Communications Nederland (MacWorld CD-ROM)
Pacific HiTech, Inc. (Info-Mac CD-ROM)
Quantum Technologies, Inc. (The Right Stuffed CD-ROM)
You are not allowed to distribute modified versions of this list,
including, but not limited to, deleting, adding or moving text or adding
non-text parts. Distribution in any electronical format except a normal
(or compressed) text file is not allowed without permission.
You are not allowed to redistribute it with any other name than
'gestalt-selectors-XX.YYY' (where XX is the version number and YYY the suffix
to indicate compression etc.) unless because of technical reasons. In such
case a name should be chosen which resambles it as closely as possible to
avoid confusion.
Editor's Address
================
Rene G.A. Ros
student Computer Science (fulltime),
Institute of Technology
member Computer Department (parttime),
Biology Faculty of the Vrije University Amsterdam
contract programmer Pascal and C, also 4th Dimension and other data-bases
Del Court van Krimpenstraat 3
1067 SG Amsterdam - Geuzenveld
The Netherlands, Europe
Bank : Postbank 4578223, Amsterdam
Phone# : +31 20 611 92 74 / +31 20 611 87 00
Internet : rgaros@bio.vu.nl (preferred)
rgaros@nikhefk.nikhef.nl
rener@htsa.aha.nl
CompuServe: >INTERNET: rgaros@bio.vu.nl
100112,1363
Mailing list:
Internet contributions:
gestalt-selectors-list@bio.vu.nl
to subscribed/unsubscribe and for the archive server:
gestalt-selectors-list-request@bio.vu.nl
CompuServe contributions:
>INTERNET: gestalt-selectors-list@bio.vu.nl
to subscribed/unsubscribe and for the archive server:
>INTERNET: gestalt-selectors-list-request@bio.vu.nl
Please contact me at the INTERNET address. I read my mail there almost
daily, while I log on to CompuServe only once or twice a month.